请帮帮我,我不知道下面的代码有什么问题:
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.
错误。数据库很好,当我将值硬编码到查询中时,它可以正常工作,而不是使用参数。
谢谢。
答案 0 :(得分:31)
来自MSDN:
当CommandType设置为Text时,ODBC的.NET Framework数据提供程序不支持将命名参数传递给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 :(得分:0)
您查询中的某个列不存在 请检查您的列名称。
答案 2 :(得分:0)
通常,当您在SQL语句中拼错列名时,您会看到这一点。你确定那些列名(custId,custName等)吗?
答案 3 :(得分:0)
尝试将pass更改为passw,也许它与asp标识符混淆了......