我的页面中有4个TextBox,我想根据输入的参数编写sql命令代码。用户至少选择填充一个或多个文本框。 所以我需要一个代码来选择填写的文本框功能的表单数据库。 它是一个使用参数从数据库中过滤的过滤函数
答案 0 :(得分:1)
试试这个
Imports System.IO
Imports System.Text
Dim sql As New StringWriter()
sql.WriteLine("Select col1, col2 , col3")
sql.WriteLine("From yourtable ")
sql.WriteLine("Where 1 =1 ")
f Txt1.Text.Length > 0 Then
sql.WriteLine("and col1 Like '%" + Txt1.Text + "%'")
End If
If Txt2.Text.Length > 0 Then
sql.WriteLine("and col2 '%" + Txt2.Text + "%'")
End If
If Txt3.Text.Length > 0 Then
sql.WriteLine("and col3 Like '%" + Txt3.Text + "%'")
End If
If Txt4.Text.Length > 0 Then
sql.WriteLine("and col4 Like '%" + Txt4.Text + "%'")
End If
表示c#
using System.IO;
using System.Text;
StringWriter sql = new StringWriter();
sql.WriteLine("Select col1, col2 , col3");
sql.WriteLine("From yourtable ");
sql.WriteLine("Where 1 =1 ");
if ((Txt1.Text.Length > 0)) {
sql.WriteLine(("and col1 Like \'%"
+ (Txt1.Text + "%\'")));
}
if ((Txt2.Text.Length > 0)) {
sql.WriteLine(("and col2 \'%"
+ (Txt2.Text + "%\'")));
}
if ((Txt3.Text.Length > 0)) {
sql.WriteLine(("and col3 Like \'%"
+ (Txt3.Text + "%\'")));
}
if ((Txt4.Text.Length > 0)) {
sql.WriteLine(("and col4 Like \'%"
+ (Txt4.Text + "%\'")));
}
然后发送sql作为命令 如果有任何语法缺失或任何逗号,所以使它正确,因为我没有IDE
写它答案 1 :(得分:1)
您需要使用if条件。
private void BuildCommand()
{
if (string.IsNullOrEmpty(textBox1.Text))
{
MessageBox.Show("You must fill out text box 1");
return;
}
var sb = new StringBuilder();
sb.AppendLine("select column1, column2, column3");
sb.AppendLine("from MyTableName");
sb.AppendLine("Where");
sb.AppendLine(textBox1.Text);
if (!string.IsNullOrEmpty(textBox2.Text))
{
sb.AppendLine(textBox2.Text);
}
if (!string.IsNullOrEmpty(textBox3.Text))
{
sb.AppendLine(textBox3.Text);
}
if (!string.IsNullOrEmpty(textBox4.Text))
{
sb.AppendLine(textBox4.Text);
}
}
现在这样做的问题是你打开了自己的SQL注入。这是一种危险的模式,不应该使用!!!!
这是一种更好的方式:
private void BuildCommand()
{
if (string.IsNullOrEmpty(textBox1.Text))
{
MessageBox.Show("You must fill out text box 1");
return;
}
var sb = new StringBuilder();
var sqlparams = new Dictionary<string, string>();
sb.AppendLine("select column1, column2, column3");
sb.AppendLine("from MyTableName");
sb.AppendLine("Where");
sb.AppendLine("param1 = @param1");
sqlparams.Add("param1", textBox1.Text);
if (!string.IsNullOrEmpty(textBox2.Text))
{
sb.AppendLine("and param2 = @param2");
sqlparams.Add("param2", textBox2.Text);
}
if (!string.IsNullOrEmpty(textBox3.Text))
{
sb.AppendLine("and param3 = @param3");
sqlparams.Add("param3", textBox3.Text);
}
if (!string.IsNullOrEmpty(textBox4.Text))
{
sb.AppendLine("and param4 = @param4");
sqlparams.Add("param4", textBox4.Text);
}
var cmd = new SqlCommand(sb.ToString());
foreach (var sqlparam in sqlparams)
{
cmd.Parameters.Add(sqlparam.Key, sqlparam.Value);
}
}