[英]c# - update ms-access database records with same id independently
我有一些學生的關系型ms-access數據庫。 (數據庫中已經填充了一些數據)我的數據庫中有兩個表:1. tblStuInfo,用於學生的常規信息。 2. tblStuEducation用於管理他們每年的等級和興趣。
名為“ StuID ”的列是tblStuInfo中的主鍵,而tblStuEducation中是外鍵。
在我的表單加載事件中,將為tblStuEducation表中的每個記錄自動創建動態文本框,並且將它們適當地填充而沒有問題。
我的問題是,當我通過winform編輯一些信息(此處僅假設EduYear)並單擊“保存”時,所有記錄將獲得相同的值(最后一個文本框)
這是我的保存按鈕代碼:
connection.Open();
OleDbCommand updateStuEducation = new OleDbCommand();
updateStuEducation.Connection = connection;
readStuEducation.CommandText = "select * from tblStuEducation where stuID = 1000";
//textBoxNamesArray use LINQ to save all values from textboxes with txtEduYear in their name
string[] textBoxNamesArray = tabpEdu.Controls.OfType<TextBox>().Where(a => a.Name.Contains("txtEduYear")).Select(a => a.Text).ToArray();
Int32 i = 0;
foreach (string value in textBoxNamesArray)
{
readStuEducation.CommandText = "update tblStuEducation set EduYear = '" + value[i] + "'";
readStuEducation.ExecuteNonQuery();
i++;
}
connection.Close();
我需要以下內容:
if i = 0 => value[0] Save in Row[0] of tblStuEducation where stuID = 1000.
if i = 1 => value[1] Save in Row[1] of tblStuEducation where stuID = 1000.
if i = 2 => value[2] Save in Row[2] of tblStuEducation where stuID = 1000.
等等...
我要進行三處更改;
1)您需要一個WHERE子句-'update tblStuEducation set EduYear = x'將更新表中的每個記錄的EduYear。
2)您這里有一個SQL注入漏洞; 連接字符串以創建CommandText是不可接受的。 您需要調用readStuEducation.Parameters.Add()或類似的名稱。 (閱讀有關OleDb的參數的信息 )
3)當您訪問value[i]
時,似乎有些困惑。 因為value
已經在相應的文本框中包含該值。 value [i]將從該字符串返回單個字符。
所以你應該得到類似
readStuEducation.CommandText = "update tblStuEducation set Grade = ? where stuID = ? and EduYear = ?";
readStuEducation.AddParameter(value); // value to set
readStuEducation.AddParameter(1000); // student ID
readStuEducation.AddParameter(eduYear); // student ID
readStuEducation.ExecuteNonQuery();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.