簡體   English   中英

如何基於VS2012上另一個數據網格的選定行在數據網格上顯示SQL隊列結果

[英]How to show sql queue results on data grid based on selected rows of another data grid on VS2012

這是我的代碼:

public void loadGrid1() {
                con.Open();
                cmd = new SqlCommand(@"SELECT StudID, Stud_Lname, Stud_Fname FROM STUDENTS;",con);
                rdr = cmd.ExecuteReader();
                while (rdr.Read()) {
                    dataGridView2.Rows.Add(rdr[0].ToString(), rdr[1].ToString(), rdr[2].ToString());
                }
                con.Close();
}

public void loadGrid3() {
                con.Open();
                cmd = new SqlCommand(@"SELECT Title, Author FROM Books INNER JOIN Borrow ON Borrow.BookID = Books.BookID WHERE Borrow.StudID = '"+dataGridView2.SelectedRows[0].Cells[0].Value.ToString()+"';", con);
                rdr = cmd.ExecuteReader();
                while (rdr.Read()) {
                    dataGridView3.Rows.Add(rdr[0].ToString(), rdr[1].ToString());
                }
                con.Close();
}

我使用loadGrid1函數來加載grid 1內容,而loadGrid3應該顯示從grid 1選擇的學生在grid 3上借來的書。

我究竟做錯了什么?

首先,您的查詢容易受到sql注入的影響。 除此之外,您可能想要檢查在這里創建的實際查詢是什么,如果有的話:

SqlCommand(@"SELECT Title, Author FROM Books INNER JOIN Borrow ON Borrow.BookID = Books.BookID WHERE Borrow.StudID = '"+dataGridView2.SelectedRows[0].Cells[0].Value.ToString()+"';");

也許將其更改為此?:

string qryString = @"SELECT Title, Author FROM Books INNER JOIN Borrow ON Borrow.BookID = Books.BookID WHERE Borrow.StudID = '"+dataGridView2.SelectedRows[0].Cells[0].Value.ToString()+"';"

SqlCommand(qryString);

編輯1:何時調用Loadgrid3方法?

編輯2:嘗試並更改代碼,如下所示:

public void loadGrid1()
{
    con.Open();
    cmd = new SqlCommand(@"SELECT StudID, Stud_Lname, Stud_Fname FROM STUDENTS;",con);
    rdr = cmd.ExecuteReader();
    while (rdr.Read())
    {
        dataGridView2.Rows.Add(rdr[0].ToString(), rdr[1].ToString(), rdr[2].ToString());
    }

    // check if dataGridView2 has more than 0 rows
    // and then select the first row by default
    if(dataGridView2.Rows.Count > 0)
    {
        dataGridView2.Rows[0].Selected = true
    }
    con.Close();
}

請記住,這對於您的緊迫問題是一個骯臟的解決方法,但是您可能想對datagridview事件等做些事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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