我正在編寫一個程序,其中用戶可以通過3個文本框過濾來自數據庫的結果,但是結果未被正確過濾,因爲如果一個框留空,它不會顯示任何使用3個文本框過濾數據庫結果
private void textBox1_TextChanged(object sender, EventArgs e)
{
con = new SQLiteConnection(cs);
con.Open();
if ((textBox2.Text==""||textBox.Text3=="")&&textBox1.Text!="")
{
adapt = new SQLiteAdapter("select data1, data2 from DataTable where data1 like '" + textBox1.Text + "%'", con);
dt = new DataTable();
adapt.Fill(dt);
dataGridView1.Source = dt;
}
else if(textBox1.Text !="")
{
adapt = new SQLiteAdapter("select data1, data2 from DataTable where data1 like '" + textBox1.Text + "%' and data2 like '" + textBox2.Text + "%' and substr(data2,-2) like '" + textBox3.Text +"'", con);
dt = new DataTable();
adapt.Fill(dt);
dataGridView1.Source = dt;
}
con.close();
}
這是我使用的文本框的一個代碼,其他兩個看起來幾乎一樣,除了我改變if子句條件。 我是否必須爲每個文本框編寫9個不同的子句,以便涵蓋所有選項?有沒有正確的方法?
我在代碼中究竟如何使用它?如果我使用'adapt = new SQLiteDataAdapter(cmd);''我在'adapt.Fill(dt);'上得到一個Fill:SelectCommand.Connection異常。我對sqlite和winforms都比較陌生。 – EInherjar
請參閱編輯,我忽略了設置連接。我正在寫這個而沒有測試它,你可能不得不自己填寫一些語法錯誤。重點是,正確使用'IFNULL'可以讓您爲任意數量的過濾器使用一個查詢。 – Crowcoder
我得到了一個未命中的錯誤/提供給命令異常的參數不足,我沒有足夠的知識來知道什麼是錯誤的。 – EInherjar