我有一些我用C#編寫的代碼來更新表。雖然代碼運行時不會產生錯誤,但表格不會更新。C#SQL更新語句不更新
如果我使用SQL命令並在SSMS查詢窗口中運行,它確實有效。
下面的代碼:
try
{
string connectionString = "Server=XXXX;Database=XXX;Integrated Security=True";
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand command = connection.CreateCommand())
{
command.CommandText = "update address set central_phone_number = '" + NewPhoneNumber + "'" + " where id = " + ID;
connection.Open();
int result = command.ExecuteNonQuery();
connection.Close();
}
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message, "SQL Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
id是表所以只有特定行被更新的主鍵。
您的查詢看起來像在執行之前的樣子嗎?什麼是你的專欄類型?順便說一句,你應該總是使用[參數化查詢](http://blog.codinghorror.com/give-me-parameterized-sql-or-give-me-death/)。這種字符串連接對於[SQL注入](http://en.wikipedia.org/wiki/SQL_injection)攻擊是開放的。 –
'ExecuteNonQuery'方法返回一個數字,表示它所影響的行數。你檢查了結果變量嗎,它是0嗎?如果是這樣,那麼你的'where'子句只是不匹配任何行。具體來說,'ID'是什麼?內容是什麼?你正在執行的最終SQL是什麼? –
在你做任何事情之前,你需要閱讀,理解並開始使用參數化查詢。此代碼易受sql注入攻擊。 –