[英]Parse string like Field1:val1,Field2:val2,Field3=val3 in c#
[英]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.