0

这个用 c# 编写的 Oracle SQL 查询给了我以下错误:无效字符

qur = " select * from emp where name LIKE '%" + TextBox1.Text + "%'";

我该如何解决这个问题?

4

2 回答 2

4

问题是您的查询非常容易受到 Sql Injection 攻击。由于您没有使用参数化查询,因此在 TextBox1 中输入的任何内容都会破坏您的查询。

例如,如果我在文本框中输入:' char,您的查询将是select * from emp where name LIKE '%'%'并且它会抛出错误。除此之外,它是漏洞,您不应使用此类查询。

您可以将查询更改为:

SqlCommand cmd= new SqlCommand( " select * from emp where name LIKE @myParam");
cmd.Parameters.AddWithValue("@myParam", "%" + TextBox1.Text + "%");

你错过了@

参数化查询如何帮助防止 SQL 注入?

C# 构造参数查询 SQL - LIKE %

于 2013-03-27T13:07:58.650 回答
-2

你应该如下使用它:

qur = " select * from emp where name LIKE '%'" + TextBox1.Text + "'%'";
于 2013-03-27T13:12:09.650 回答