Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用c在数据库中查找文本#_C#_C# 4.0_C# 3.0_C# 2.0 - Fatal编程技术网

C# 如何使用c在数据库中查找文本#

C# 如何使用c在数据库中查找文本#,c#,c#-4.0,c#-3.0,c#-2.0,C#,C# 4.0,C# 3.0,C# 2.0,可能重复: 我想详细搜索一个名字。。这是搜索按钮的代码 private void button1_Click(object sender, EventArgs e) { string connectionString = Tyres.Properties.Settings.Default.Database1ConnectionString; SqlConnection conn = new SqlConnection(connectionString); DataTab

可能重复:

我想详细搜索一个名字。。这是搜索按钮的代码

private void button1_Click(object sender, EventArgs e)
{
    string connectionString = Tyres.Properties.Settings.Default.Database1ConnectionString;
    SqlConnection conn = new SqlConnection(connectionString);
    DataTable dt = new DataTable();
    SqlDataAdapter SDA = new SqlDataAdapter("SELECT * FROM table1 where Details like" + textBox1.Text, conn);
    SDA.Fill(dt);
    dataGridView1.DataSource = dt;
}
这个例子就是我的应用程序

我得到一个错误:

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
附加信息:在预期条件的上下文中指定的非布尔型表达式,靠近“likeelei”

我已尝试使用此代码搜索整数(如数量),它对我很有效:

private void button1_Click(object sender, EventArgs e)
{
    string connectionString = Tyres.Properties.Settings.Default.Database1ConnectionString;
    SqlConnection conn = new SqlConnection(connectionString);
    DataTable dt = new DataTable();
    SqlDataAdapter SDA = new SqlDataAdapter("SELECT * FROM table1 where Quantity like" + int.parse(textBox1.Text), conn);
    SDA.Fill(dt);
    dataGridView1.DataSource = dt;
}

所以我需要一个关于第一个代码的帮助

看起来你需要在SQL语句中添加一个空格,你只是在
textBox1.Text
的值后面加上一个空格,所以
textBox.Text的值变成了
like
的一个单词

SqlDataAdapter SDA = new SqlDataAdapter("SELECT * FROM table1 where Details like " + textBox1.Text, conn);

看起来您需要在SQL语句中添加一个空格,您只是添加了
textBox1.Text
的值,但没有空格,因此
textBox.Text
的值变成了带有
like
的一个单词

SqlDataAdapter SDA = new SqlDataAdapter("SELECT * FROM table1 where Details like " + textBox1.Text, conn);

我还建议使用SqlParameters现在我遇到了另一个问题:System.Data.SqlClient.SqlException类型的未处理异常发生在System.Data.dll中。其他信息:无效的列名“Audi”。@user1951045您应该发布另一个问题以获得该问题。不确定如何从发布的内容中获得无效的列名。您通过
textBox1
提供的任何内容都可能是问题的根源。动态构建的SQL可能很棘手,如果输入没有经过消毒,它们会允许SQL注入攻击,因此首选存储过程。他之所以会出现这种错误,是因为他在SQL中放入了一个简单的无引号字符串。因此,他的输入被视为一个列名。我还建议使用SqlParameters。现在我遇到了另一个问题:System.Data.SqlClient.SqlException类型的未处理异常发生在System.Data.dll中。其他信息:列名“Audi”无效。@user1951045您应该发布另一个问题来获取该信息。不确定如何从发布的内容中获得无效的列名。您通过
textBox1
提供的任何内容都可能是问题的根源。动态构建的SQL可能很棘手,如果输入没有经过消毒,它们会允许SQL注入攻击,因此首选存储过程。他之所以会出现这种错误,是因为他在SQL中放入了一个简单的无引号字符串。所以他的输入就像一个列名。你在3小时内问了两次基本相同的问题。不要那样做你在3小时内已经问了两次基本相同的问题。不要那样做