为什么我在'='错误附近得到错误的语法

 手机用户2502886695 发布于 2023-02-12 15:28

我尝试从datatable绑定标签

我收到这个错误

  Incorrect syntax near '='.

在这条线上

 da.Fill(dt);

我的代码:Page_Load

LbLID.Text =this.Page.Request.QueryString["DI"].ToString();

 SqlConnection con = new SqlConnection("Data Source=local;Initial Catalog=DB;User 
 ID=sa;Password="pass);
 SqlDataAdapter da = new SqlDataAdapter("select * from Table1 where ID= " + 
 LbLID.Text.Trim(), con);

 System.Data.DataTable dt = new System.Data.DataTable();
 da.Fill(dt);
 lblS1.Text = dt.Rows[0][4].ToString();
 lblS1.DataBind();

p.s.w.g.. 5

你不能在多行中打破正常的字符串文字,你的结束引号也是错误的:

SqlConnection con = new SqlConnection("Data Source=local;Initial Catalog=DB;User ID=sa;Password=pass");

或者使用逐字文字,您可以跨越多行:

SqlConnection con = new SqlConnection(
    @"Data Source=local;
      Initial Catalog=DB;
      User ID=sa;
      Password=pass");

也就是说,您的代码容易受到SQL注入攻击.为了您自己,为了您的用户,您真的应该使用参数化查询,而不是像这样连接您的SQL查询.

这是一个简单的例子:

using(var con = new SqlConnection(...))
{
    var cmd = new SqlCommand("select * from Table1 where ID = @ID", con);
    con.Open();
    cmd.Parameters.AddWithValue("@ID", LbLID.Text.Trim());
    var da = new SqlDataAdapter(cmd);
    var dt = new DataTable();
    da.Fill(dt);
    lblS1.Text = dt.Rows[0][4].ToString();
    lblS1.DataBind();
}

其他一些提示:您应该避免使用select *查询,因为您的数据库模式可能会更改,这会破坏任何现有代码.最好只选择您感兴趣的列并进行简单的调用ExecuteScalar.

1 个回答
  • 你不能在多行中打破正常的字符串文字,你的结束引号也是错误的:

    SqlConnection con = new SqlConnection("Data Source=local;Initial Catalog=DB;User ID=sa;Password=pass");
    

    或者使用逐字文字,您可以跨越多行:

    SqlConnection con = new SqlConnection(
        @"Data Source=local;
          Initial Catalog=DB;
          User ID=sa;
          Password=pass");
    

    也就是说,您的代码容易受到SQL注入攻击.为了您自己,为了您的用户,您真的应该使用参数化查询,而不是像这样连接您的SQL查询.

    这是一个简单的例子:

    using(var con = new SqlConnection(...))
    {
        var cmd = new SqlCommand("select * from Table1 where ID = @ID", con);
        con.Open();
        cmd.Parameters.AddWithValue("@ID", LbLID.Text.Trim());
        var da = new SqlDataAdapter(cmd);
        var dt = new DataTable();
        da.Fill(dt);
        lblS1.Text = dt.Rows[0][4].ToString();
        lblS1.DataBind();
    }
    

    其他一些提示:您应该避免使用select *查询,因为您的数据库模式可能会更改,这会破坏任何现有代码.最好只选择您感兴趣的列并进行简单的调用ExecuteScalar.

    2023-02-12 15:30 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有