2015-01-15 28 views
1

的Microsoft Jet OLEDB語法錯誤我有類似下面的一個數據庫:在UPDATE

Table1(AutoNumber, Text, Number, Memo) // this is field types 
Table1(ID, Title, Price, Image) 

我想用C#來更新數據庫的現有元素:

const string connectionString = "provider=Microsoft.Jet.OLEDB.4.0;" + "data source=bd.mdb"; 
OleDbConnection m_dataBase = new OleDbConnection(connectionString); 
OleDbConnection m_dataBase.Open(); 
SQL = "UPDATE Table1 SET Title='test', Price=35, Image='Test' WHERE ID=1"; 
OleDbCommand SQLQueryCommand = new OleDbCommand(SQL, m_dataBase); 
int response = SQLQueryCommand.ExecuteNonQuery(); 

結果我得到這個錯誤。 「UPDATE指令中的Microsoft JET數據庫引擎錯誤語法」。

我在做什麼錯? PS:我可以成功做SELECTINSERT,但不是UPDATE

回答

0

那麼,如果你的SQL命令是唯一的問題,就會出現一些可見的問題。 只需嘗試使用下面的參數化Update子句來避免大量的小錯誤和SQL注入。

SQL = "UPDATE Table1 SET Title=?, Price=?, Image=? WHERE ID=?"; 
    SQLQueryCommand.Parameter.Add("@MyTitle", OleDbType.VarChar).Value = "Test"; 
    SQLQueryCommand.Parameter.Add("@MyPrice", OleDbType.Integer).Value = 35; 
    SQLQueryCommand.Parameter.Add("@MyImage", OleDbType.VarChar).Value = "TestAgain"; 
    SQLQueryCommand.Parameter.Add("@MyID", OleDbType.VarChar).Value = 1; 

要了解有關參數化的更多信息,請查看本MSDN文章底部的示例。

OleDbCommand.Parameters Property

而且,這是一個很好的做法,圍繞using語句內的連接。

using (var m_dataBase = new OleDbConnection(connectionString) { ... }