[英]How retrieve and display data from a database in a windows form?
我試圖通過選擇基於特定電子郵件的記錄在Windows窗體上顯示數據庫內容。
我正在使用以下代碼,但未檢索到它
private void editrecordbutton_Click(object sender, EventArgs e)
{
MyOleDbConnection.Open();
string query = string.Format("select Email from login where Email='{0}'", editrecordtextBox.Text);
OleDbCommand vcom1 = new OleDbCommand(query, MyOleDbConnection.vcon);
OleDbDataReader reader = vcom1.ExecuteReader();
//int check = vcom1.ExecuteNonQuery();
string email = (string)reader["Email"];
if (email == editrecordtextBox.Text)
{
if (editrecordtextBox.Text != string.Empty)
{
EmailReturn = editrecordtextBox.Text;
FinalEdit er = new FinalEdit();
this.Close();
er.Show();
MyOleDbConnection.Close();
}
else
{
MessageBox.Show("No record selected");
}
}
else
{
MessageBox.Show("Invalid Email-Id");
}
MyOleDbConnection.Close();
}
如果我以正確的方式考慮這種方法,請幫助我理解它的問題所在。
OleDbDataReader
具有方法Read
。 只要有可用數據, Read
將返回true。
通常,您會這樣使用它:
while(reader.Read())
{
// work with the current row of data
}
由於您從未調用Read
,因此您不會檢索任何數據。 您需要至少調用一次Read,才能將其移至查詢返回的第一行數據。
您的代碼的另一個重要問題與SQL Injection有關 。 您正在手動創建查詢字符串,這非常危險。 您確實需要切換到參數化查詢。 這是一篇很好的博客文章,解釋了如何使用它們: 給我參數化的SQL,否則給我死亡
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.