2009-10-08 116 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