2012-12-22 105 views
-1

我想從數據庫產品名稱ado.net.when搜索時,用戶輸入產品的全名得到的結果,但我希望當用戶輸入第一個字母的文本更改事件調用和如果用戶只輸入「E」,根據第一letter.eg得到的結果是獲得根據電子的所有結果,並顯示在datagridview的關於ado.net搜索

private void textBox10_TextChanged(object sender, EventArgs e) 
    { 
     SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["hamad"].ConnectionString); 
     conn.Open(); 
     DataSet dtt = new DataSet(); 
     SqlCommand cmd = new SqlCommand("SELECT * from product where pname = '" + textBox10.Text.ToString() + "'", conn); 
     SqlDataAdapter daa = new SqlDataAdapter(); 
     daa.SelectCommand = cmd; 
     daa.Fill(dtt, "product"); 
     dataGridView2.DataSource = dtt; 
     dataGridView2.DataMember = "product"; 
     dataGridView2.Visible = true; 
    } 

請幫助我。我想了很多

+0

你在參考上面的代碼時遇到了什麼問題? – Steve

+1

請注意請注意SWeko答案的第一行;然後轉到並重新訪問您的現有數據訪問代碼的全部**。你應該**從不**連接輸入。 –

回答

2

首先,也是有效即使我的答案的假設不正確,永遠不會,永遠追加用戶提供給SQL語句的文本。這是要求SQL Injection問題


我猜想,你需要開始與文本在文本框中輸入該用戶的所有結果。

你問的數據庫對於任何條目正是什麼已經輸入到數據庫中,因此當用戶查找的內容,讓我們說的書,他將需要進入書的compleat標題,或它不會被退回。這不是一個搜索:)

要做到這一點,你需要使用like sql operator,使用= insead。嘗試改變行:

SqlCommand cmd = new SqlCommand("SELECT * from product where pname = '" + textBox10.Text.ToString() + "'", conn); 

SqlCommand cmd = new SqlCommand("SELECT * from product where pname like @pname+'%'", conn); 
cmd.Parameters.AddWithValues("@pname", textBox10.Text); 

這應該(安全)退回的任何產品,該名稱與輸入的字符串開始。

0
  1. textChange事件在用戶按Tab鍵時按下Enter鍵或點擊文本框外的內容時調用。
  2. 如果你想從字符串的一部分搜索,你必須使用像在sql查詢中。

試試這個

private void textBox10_TextChanged(object sender, EventArgs e) 
    { 
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["hamad"].ConnectionString); 
    conn.Open(); 
    DataSet dtt = new DataSet(); 
    SqlCommand cmd = new SqlCommand("SELECT * from product where pname like @pname+'%'", conn); 
    cmd.Parameters.AddWithValues("@pname", textBox10.Text); 
    SqlDataAdapter daa = new SqlDataAdapter(); 
    daa.SelectCommand = cmd; 
    daa.Fill(dtt, "product"); 
    dataGridView2.DataSource = dtt; 
    dataGridView2.DataMember = "product"; 
    dataGridView2.Visible = true; 
    } 

這將顯示以您鍵入的字符的所有記錄。 備註;所有這些都將在您按Tab鍵,按回車鍵或點擊文本框外的內容完成。

+1

感謝兄弟們的幫助。 – user1256543