我在更新數據庫中的一行時出現此錯誤。wcf服務應用程序中的更新錯誤
類型「System.Data.OleDb.OleDbException」的異常出現在System.Data.dll中,但在用戶代碼中沒有處理
附加信息:在UPDATE語句的語法錯誤。
無法調用服務。可能的原因:服務處於脫機狀態或無法訪問;客戶端配置與代理不匹配;現有的代理無效。有關更多詳細信息,請參閱堆棧跟蹤。您可以嘗試通過啓動新代理,還原爲默認配置或刷新服務來進行恢復。
這是我的更新代碼:
public string UpdateInventory(string name, int quantity)
{
string strMessage = string.Empty;
string sql;
//Create connection object
OleDbConnection oleConn = new OleDbConnection(connString);
oleConn.Open();
//Update a row
sql = "UPDATE Product SET Quantity Attribute = '" + quantity + "' WHERE Name = '" + name + "'";
OleDbCommand cmd = new OleDbCommand(sql, oleConn);
int rowsAffected = (int)cmd.ExecuteNonQuery();
if(rowsAffected > 0)
{
strMessage = name + "Details updated succesfully";
}
else
{
strMessage = name + "Details not updated successfully";
}
oleConn.Close();
return strMessage;
}
但如果我更新十進制價格和字符串描述具有相同的代碼。它進展順利。它只是在更新數量時獲取該代碼。
[SQL注入警報](http://msdn.microsoft.com/zh-cn/library/ms161953%28v=sql.105%29。aspx) - 你應該**不**連接你的SQL語句 - 使用**參數化查詢**來代替以避免SQL注入 – 2014-10-22 06:12:08
圍繞'Quantity Attribute'使用括號來處理空間 - 'UPDATE Product SET [Quantity Attribute]'修復語法錯誤的最可能原因。而當你在,做@marc_s說,並改變你的代碼使用參數化查詢。 – Tim 2014-10-22 06:56:04