2009-10-08 85 views
7

请帮助我,我不知道有什么可以是错误的下面的代码:ASP.NET ODBC查询与参数

 OdbcConnection conn = new OdbcConnection(connString); 
     String query = "INSERT INTO customer (custId, custName, custPass, "+ 
         "custEmail, custAddress, custAge) VALUES (" + 
         "@ID, @Name, @Pass, @Email, @Address, @Age)"; 

     OdbcCommand exe = new OdbcCommand(query, conn); 
     exe.Parameters.Add("@ID", OdbcType.UniqueIdentifier).Value = id; 
     exe.Parameters.Add("@Name", OdbcType.VarChar).Value = name; 
     exe.Parameters.Add("@Pass", OdbcType.VarChar).Value = pass; 
     exe.Parameters.Add("@Email", OdbcType.VarChar).Value = email; 
     exe.Parameters.Add("@Address", OdbcType.VarChar).Value = address; 
     exe.Parameters.Add("@Age", OdbcType.Int).Value = age; 
     conn.Open(); 
     exe.ExecuteNonQuery(); // ERROR [07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 6. 

此代码抛出我Too few parameters.错误,当我试图执行查询。数据库很好,当我将值硬编码到查询中时,它工作正常,而不是使用参数。

谢谢。

+1

尝试改变传球也许PASSW是越来越混合与ASP标识符... – halocursed 2009-10-08 06:49:08

回答

31

从MSDN:

当CommandType设置为文本,在.NET Framework数据提供ODBC做不支持将命名参数传递给SQL语句或由OdbcCommand调用的存储过程。无论哪种情况,请使用问号(?)占位符。例如:

SELECT * FROM Customers WHERE CustomerID = ? 

重写查询以

OdbcConnection conn = new OdbcConnection(connString); 
    String query = "INSERT INTO customer (custId, custName, custPass, "+ 
        "custEmail, custAddress, custAge) VALUES (" + 
        "?, ?, ?, ?, ?, ?)"; 

参数计数的订购!

编辑:参数可以添加这样:​​

OdbcCommand exe = new OdbcCommand(query, conn); 
exe.Parameters.Add("ID", OdbcType.UniqueIdentifier).Value = id; 
exe.Parameters.Add("Name", OdbcType.VarChar).Value = name; 
exe.Parameters.Add("Pass", OdbcType.VarChar).Value = pass; 
exe.Parameters.Add("Email", OdbcType.VarChar).Value = email; 
exe.Parameters.Add("Address", OdbcType.VarChar).Value = address; 
exe.Parameters.Add("Age", OdbcType.Int).Value = age; 
+1

非常感谢,它帮助=) – 2009-10-08 07:10:05

+1

使用ODBC到FilMaker,此语法在.NET环境中完美工作,并且参数的YES顺序数! – 2013-07-16 19:40:23

+0

如果查询参数没有被命名,在'Parameters.Add()'中的第一个参数有什么作用? – 2016-08-26 20:49:31

0

查询中的某一列不存在。
请检查您的列名。

0

通常,当您在SQL语句中拼错列名时会看到此内容。你确定那些列名(custId,custName等)?

+0

我敢肯定,因为如果我改变的第三行我查询到实际值它工作正常。 – 2009-10-08 07:06:20

0

尝试改变传球也许PASSW是越来越混合与ASP标识符...

+0

没有帮助,我看到相同的错误信息(( – 2009-10-08 07:04:54