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