我有下面的代碼,不會更新記錄。有問題的數據顯示在DataGridView中,所以我知道我正在連接到數據庫,沒有任何問題。如果有人看到這個問題有什麼問題,請讓我知道,我一直在關注它一段時間,我看不到任何看起來不正確的東西。沒有異常拋出它,什麼都不做。提前致謝。SQL更新不起作用,不知道爲什麼
string strSQLConnectionString = "Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\dbase.mdf;Integrated Security=True";
string strUpdateCommand = "UPDATE table1 SET Active = @Active WHERE Order = @Order";
SqlConnection connection = new SqlConnection(strSQLConnectionString);
SqlCommand updateCommand = new SqlCommand(strUpdateCommand, connection);
connection.Open();
updateCommand.Parameters.AddWithValue("Order", "1");
updateCommand.Parameters.AddWithValue("@Active", "True");
updateCommand.ExecuteNonQuery();
connection.Close();
updateCommand.Parameters.Clear();
在實際的代碼中,有一個try/catch以connection.open開始,並以parameters.clear結尾。 再次感謝您的幫助。 erik
編輯 @Rahul Singh感謝您的回覆,並鏈接到博客。您在添加缺少的「@」時建議的更改無法解決問題。相反,我現在得到的是在執行查詢行上的「連接未打開,連接必須打開」異常。我把你的建議對使用塊(感謝!)和修改後的代碼
using (SqlConnection connection = new SqlConnection(strSQLConnectionString))
{
using (SqlCommand updateCommand = new SqlCommand(strUpdateCommand, connection))
{
updateCommand.Parameters.AddWithValue("@Order", "1");
updateCommand.Parameters.AddWithValue("@Active", "True");
updateCommand.ExecuteNonQuery();
}
}
奇怪的是,如果我明確地說「connection.open()」和「的Connection.close();」那麼我不會得到這個錯誤,但是,再一次,沒有任何事情可以完成。謝謝你的進一步幫助,我正要在頭皮上劃一個洞,在頭皮上劃一個洞。
您需要仍然打開連接。請添加'connection.open()'作爲SqlCommand的'using'塊內的第一行,不需要關閉連接。 – 2014-12-11 12:41:18
好吧,我這樣做了,但現在我們回到了'沒有完成'的桌子上。我甚至刪除了參數,只做了一個直接更新(即「update table1 set active ='true'where order ='1'」;)並沒有發生任何事情 - 甚至沒有發生異常。 我開始懷疑我是否確實沒有連接到數據庫。字段名稱是正確的,我使用相同的連接字符串填充datagridview,因爲我在這裏,我不知道還有什麼要檢查。 – user2201221 2014-12-11 13:38:47
最好的方法是啓動一個'SQL Server Profiler'並檢查正在執行的查詢。檢查一下並讓我知道。 – 2014-12-11 13:41:21