繁体   English   中英

在SQL Server查询参数中使用'@ val3'或@ val3

[英]Using '@val3' or @val3 in SQL Server query parameters

我只是想知道发送此旧查询语句的正确方法是什么:

"SELECT " +
   "* " +
"FROM " +
   "tE " +
"WHERE " +
   "active = 1 " +
"AND " +
   "StartDate = " + Session["between"] + " " +
"AND " +
   "UPPER(I1) = '" + Session["StrUser"].ToString().ToUpper() + "'"

以这种方式(正确的参数传递方式):

SqlDataAdapter da = new SqlDataAdapter();
DataSet _ds1 = new DataSet();

String blah = "SELECT " +
                 "* " +
              "FROM " +
                 "tE " +
              "WHERE " +
                 "active = @val1 " +
              "AND " +
                 "StartDate @val2 " +
              "AND " +
                 "UPPER(I1) = '@val3'"

command = new SqlCommand(blah, con);
command.Parameters.AddWithValue("@val1", 1);
command.Parameters.AddWithValue("@val2", Session["between"].ToString());
command.Parameters.AddWithValue("@val3", Session["StrUser"].ToString().ToUpper());

da = new SqlDataAdapter(command);
da.Fill(_ds1, dbName);
da.Dispose();

closeAllConnections();
command.Parameters.Clear();

return _ds1;

这个问题的主要焦点是'@val3'"部分。是否需'@val3'" ,或者如果需要, command.Parameters.AddWithValue自动将其放置吗?

使用参数是从数据中分离SQL 代码的好方法。 因此,您应该理解'字符是数据文字的一部分。 因此,除非你想比较I1与文字串@val3 ,而是要使用的参数 ,它不应该被包含在'秒。

这是对的:

String blah = "SELECT " +
             "* " +
          "FROM " +
             "tE " +
          "WHERE " +
             "active = @val1 " +
          "AND " +
             "StartDate = @val2 " +
          "AND " +
             "UPPER(I1) = @val3"

如果需要, command.Parameters.AddWithValue自动将其放置吗?

不,它不会-因为你不再试图建构一个面值,没有' s的所有要求。 参数不仅是替换文本的一种好方法,还可以将代码和数据分开,而且重要的是,它可以处理后台所需的任何转换

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM