我正在寫一個使用SQLite和C#的WinForms數據庫應用程序。我有一個失敗的sqlite查詢,並且我不確定哪裏出錯,因爲我嘗試了所有我能想到的。看看我的C#SQLite查詢,我做錯了什麼?
public DataTable searchSubs(String businessName, String contactName)
{
string SQL = null;
if ((businessName != null && businessName != "") && (contactName != null && contactName != ""))
{
// provided business name and contact name for search
SQL = "SELECT * FROM SUBCONTRACTOR WHERE BusinessName LIKE %@BusinessName% AND Contact LIKE %@ContactName%";
}
else if ((businessName != null && businessName != "") && (contactName == null || contactName == ""))
{
// provided business name only for search
SQL = "SELECT * FROM SUBCONTRACTOR WHERE BusinessName LIKE %@BusinessName%";
}
else if ((businessName == null || businessName == "") && (contactName != null && contactName != ""))
{
// provided contact name only for search
SQL = "SELECT * FROM SUBCONTRACTOR WHERE Contact LIKE %@ContactName%";
}
else if ((businessName == null || businessName == "") && (contactName == null || contactName == ""))
{
// provided no search information
SQL = "SELECT * FROM SUBCONTRACTOR";
}
SQLiteCommand cmd = new SQLiteCommand(SQL);
cmd.Parameters.AddWithValue("@BusinessName", businessName);
cmd.Parameters.AddWithValue("@ContactName", contactName);
cmd.Connection = connection;
SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
DataSet ds = new DataSet();
try
{
da.Fill(ds);
DataTable dt = ds.Tables[0];
return dt;
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
return null;
}
finally
{
cmd.Dispose();
connection.Close();
}
}
我不斷得到一個錯誤,說它在%附近失敗。這一切都很好,但我認爲我錯了,但我不知道在哪裏!我嘗試添加圍繞「喜歡」變量單引號,像這樣:
SQL = "SELECT * FROM SUBCONTRACTOR WHERE Contact LIKE '%@ContactName%'";
,並坦白地說,這是所有我能想到的。有人有主意嗎?
值。 IsNullOrEmpty()'而不是單獨的比較到'null'和'「」' – juharr 2011-01-05 02:36:15
@juharr:好的一點,我會改變他們。謝謝! – CODe 2011-01-05 02:42:11
「返回沒有記錄」不會給應答者帶來任何有用的信息。你可以在'cmd'執行時設置斷點,並檢查sql查詢字符串和參數a重新正確。 – 2011-01-05 02:54:30