簡體   English   中英

C#-獨立更新具有相同ID的MS-Access數據庫記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM