【发布时间】:2010-12-19 06:41:57
【问题描述】:
首先,我使用的是 C#,以及 SQLite 的 C# 包装器。
我正在尝试使用以下代码查询我的 SQLite 数据库,但它不断返回整个数据库,而不是预期的。我对 sql 查询非常陌生,所以请查看我的查询,如果您发现任何可能导致问题的内容,请告诉我。
public DataTable queryDatabase(String column, String filter)
{
string SQL = "SELECT " + column + " FROM SUBCONTRACTOR " + filter;
SQLiteCommand cmd = new SQLiteCommand(SQL);
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();
}
}
这是我正在运行以调用上述方法的代码...
dataGridView.DataSource = sqliteQuery.queryDatabase("*", "WHERE GLOPolicy != 'True' OR ALPolicy != 'True' OR WCPolicy != 'True' OR ULPolicy != 'True' AND BusinessName LIKE '%" + bySubBusinessNameMaskedTextBox.Text + "%' AND Contact LIKE '%" + bySubContactNameMaskedTextBox.Text + "%'");
一如既往地感谢您的帮助!
编辑: 通过我的查询,我试图选择所有具有...的记录
(GLOPolicy != true OR ALPolicy != true OR WCPolicy != True OR ULPolicy != True)
与
BusinessName LIKE [此处为企业名称变量]
与
ContactName LIKE [此处为联系人姓名变量]
【问题讨论】:
-
我们只能猜测,但我猜你的 WHERE 子句实际上匹配数据库中的所有记录。
-
不确定 SQLLite 的规则,但也许您需要在所有这些 OR 子句周围加上括号?取决于你的意图是什么......
-
我真正想要的只是有人查看我的查询,因为不,它与数据库中的所有记录都不匹配。 @James:括号会去哪里?你的意思是括号还是括号?