【问题标题】:Wild Card % Giving an Error in a SQL Query通配符百分比在 SQL 查询中给出错误
【发布时间】:2013-03-27 13:03:37
【问题描述】:

这个用 c# 编写的 Oracle SQL 查询给了我以下错误:invalid character

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

我该如何解决这个问题?

【问题讨论】:

  • 请对查询进行参数化。如果我用'; DROP emp; -- 设置我的文本框的值怎么办
  • 问题似乎不在% 字符上。 TextBox1.Text 包含什么?
  • 我输入了一个名字,带有一些字符

标签: c# sql oracle wildcard


【解决方案1】:

问题是您的查询很容易受到 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 + "%");

你错过了@

How do parameterized queries help against SQL injection?

C# constructing parameter query SQL - LIKE %

【讨论】:

  • 非常感谢您提供的信息。
  • @SandraDsouza 欢迎您。请注意 Sql 注入攻击。这是一个非常严重的问题。
【解决方案2】:

你应该像下面这样使用它:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    相关资源
    最近更新 更多