Я пишу приложение базы данных 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%'";
и, честно говоря, это все, что я могу придумать. У кого-нибудь есть идеи?