簡體   English   中英

如何以Windows窗體從數據庫中檢索和顯示數據?

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

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