【发布时间】:2019-06-07 11:41:13
【问题描述】:
假设您有一个表,并且您想要过滤任何类型的数据。我希望显示与此值相关的整行,例如,日期、名称、描述、值,仅过滤 1 个表字段
string filter = "";
string command = "SELECT * FROM Movimentos WHERE [Tipo de Movimento] = 'Crédito'";
if (textDataMovimento.Text != "")
{
filter = filter + "[Data Movimento] LIKE '%" + textDataMovimento.Text + "%' AND";
}
if (textDataValor.Text != "")
{
filter = filter + " [Data Valor] LIKE '%" + textDataValor.Text + "%' AND";
}
if (textDescricao.Text != "")
{
filter = filter + " [Descrição] LIKE '%" + textDescricao.Text + "%' AND";
}
if (textValor.Text != "")
{
filter = filter + " [Valor] LIKE '%" + textValor.Text + "%' AND";
}
if (textTipodeMovimento.Text != "")
{
filter = filter + "[Tipo de Movimento] LIKE '%" + textTipodeMovimento.Text + "%'AND";
}
【问题讨论】:
-
注意SQL注入,改用参数
-
我是来寻求帮助的,我是新来使用这种语言的,只用了几天时间
-
只需将您的参数传递给您的查询并使用
ISNULL(Param, Column)这样您就不需要检查文本框是否为空。老实说,我不知道 C#。过滤器属性很难,因为您需要检查每个文本框是否输入AND,只需使用查询参数即可。 -
我指的是我在您的其他帖子上发表的评论(在不同的帐户上?):“您所追求的是SqlCommand.Parameters Property。SQL 命令的参数化非常重要。如果你不熟悉它,我建议阅读SQL Injection。”
-
另外你在
"SELECT * FROM Movimentos WHERE [Tipo de Movimento] = 'Crédito'"的决赛中错过了AND。想象一下只有textDataMovimento.Text != ""为真,那么查询将是"SELECT * FROM Movimentos WHERE [Tipo de Movimento] = 'Crédito' [Data Movimento] LIKE '%valueoftextbox%' AND",它是无效的,会抛出错误。
标签: c# sql asp.net sql-server