【问题标题】:exception System.Data.SqlClient.SqlException: 'Incorrect syntax near ','.'异常 System.Data.SqlClient.SqlException: '',' 附近的语法不正确。'
【发布时间】:2019-11-12 22:27:06
【问题描述】:

我在另一个TextBox 中插入一个值后尝试填充ComboBox。它不断返回:

System.Data.SqlClient.SqlException: '',' 附近的语法不正确。'

public void carrega_status()
{
    string sql2 = "select * from tb02_alarme WHERE tb02_desc =" + txtdescala + " ;";
    SqlConnection conn1 = Conexao.ObterConexao();
    SqlDataAdapter da2 = new SqlDataAdapter(sql2, conn1);
    DataTable resultado = new DataTable();
    resultado.Clear();
    txtstatus.DataSource = null;
    da2.Fill(resultado);
    txtstatus.DataSource = resultado;
    txtstatus.ValueMember = "tb02_class";
    txtstatus.DisplayMember = "tb02_class";
    txtstatus.SelectedItem = "";
    txtstatus.Refresh();

}

错误出现在da2.Fill(resultado);

【问题讨论】:

  • sql2 的结果是什么样的? (引用?)
  • 改用参数。
  • @shar 您可能缺少字符串值所需的单引号:string sql2 = "select * from tb02_alarme WHERE tb02_desc =" + txtdescala + " ;"; 尝试更改为:string sql2 = "select * from tb02_alarme WHERE tb02_desc = '" + txtdescala + "' ;";
  • 您的问题是一个警告信号,应该非常认真地对待。如果您无法控制txtdescala 的内容是什么,那么您将面临SQL 注入攻击。有人可能会插入可以删除您的表或数据库或其他危险事物的语句。答:使用参数。
  • 好吧,“a”不是有效的 sql - 我对它的抱怨并不感到惊讶,但这与您显示的错误不匹配

标签: c# sql


【解决方案1】:

试试这个适合我的解决方案:

    string sql2 = "select * from tb02_alarme WHERE tb02_desc ='" + txtdescala + "' ;";

【讨论】:

  • 除非 OP 继续这样做,否则它们会受到 SQL 注入攻击。即使对于测试应用程序,从 IMO 开始正确就值得使用 SQL 参数。
  • 成功了!谢谢
【解决方案2】:

让自己对 SQL 注入持开放态度绝不是一个好主意。特别是如果你只是在学习,你应该从一开始就学习正确的方法——而不是艰难地学习。 Here is a simple tutorial on how to do this.

人们可以随心所欲地回答您的问题,但从长远来看这对您没有帮助。所有的 cmets 都告诉你使用参数,你真的应该注意这个警告,因为所有这些人都是试图帮助你的专家!

【讨论】:

    猜你喜欢
    • 2021-03-31
    • 2019-07-17
    • 2017-12-08
    • 2014-05-09
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多