我有一個名爲主題的表格。我想更新教師,課程和科目。用戶選擇程序,然後選擇相應的教師,然後選擇相應的科目。不,當我更新記錄時,只有兩個檔案正在更新,但只有一個主題正在更新重新編制。我的代碼更新的字段如下:爲什麼將查詢(下面給出)結果寫入無行?
string SQLString2 = "";
OleDbCommand SQLCommand = new OleDbCommand();
foreach (var item in checkedListBox1.CheckedItems)
{
foreach (string subName in (item.ToString().Split('+')))
{
SQLString2 = "UPDATE subjects SET program = '" + program + "', faculty = '" + faculty + "', subjectN = '" + subName + "' WHERE RollNo = " + rollNumber + " AND regYear = " + regNumber + " AND program = '" + this.comboBox1.SelectedItem.ToString() + "' AND faculty = '" + this.comboBox2.SelectedItem.ToString() + "'";
SQLCommand.CommandText = SQLString2;
SQLCommand.Connection = database;
int response2;
try
{
response2 = SQLCommand.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
學院和程序被成功更新,但主題被更新爲這樣的:
English
English
English
English
English
是我的查詢嗎?如果您更新受西班牙,然後到法國,然後到英國
好以後所有的主題
'subName'的值是什麼?你確定它不是空字符串嗎?你調試了你的代碼嗎?你是否首先在數據庫管理器中嘗試了你的命令?它在那裏工作嗎?並始終使用[參數化查詢](http://www.codinghorror.com/blog/2005/04/give-me-parameterized-sql-or-give-me-death.html)。這種字符串連接對於[SQL注入](http://en.wikipedia.org/wiki/SQL_injection)攻擊是開放的。國際海事組織,'SQLCommand'不是一個好的變量名作爲'OleDbCommand'。同樣使用'using'語句來處理你的數據庫連接和對象。 – 2014-12-13 15:54:15
你的問題沒有意義。如果ExecuteNonQuery返回0,則不更新行。 BTW:通過不使用參數,您的查詢容易受到SQL注入攻擊。 – 2014-12-13 15:56:44
在調試中,我可以看到預期的值。但是每個科目只有'英文'正在更新。 – Sameer 2014-12-13 16:03:07