asp.net Parameters.AddWithValue方法在SQL语句的 Where 字句中的用法
更新时间:2009年01月21日 23:44:48 作者:
今天晚上看论坛,有人提问说,Parameters.AddWithValue方法在有些情况下不好使
他的写法是这样的:
复制代码 代码如下:
view plaincopy to clipboardprint?
string strWhere = "'%美%'";
strSql = "SELECT * FROM area Where [name] like @strWhere";//这个就不好使
cmd.Parameters.AddWithValue("@strWhere", strWhere);
string strWhere = "'%美%'";
strSql = "SELECT * FROM area Where [name] like @strWhere";//这个就不好使
cmd.Parameters.AddWithValue("@strWhere", strWhere);
这是因为,ASP.NET在生成SQL语句时,会在Like后面再加上一次单引号,造成错误,如果打开 SQL Server的跟踪管理器,可以看到执行的语句如下
复制代码 代码如下:
exec sp_executesql N'SELECT * FROM Article Where [Title] like @strWhere',N'@strWhere nvarchar(5)',@strWhere=N'%为什么%'
不难理解,在 OldDbCommand 中也会有类似的做法。
正确的代码为:
复制代码 代码如下:
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\aspxWeb.mdb;";
OleDbConnection con = new OleDbConnection(connectionString);
con.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
string strWhere = "%孟宪会%";
string strSql = "SELECT * FROM Document Where [Author] like @strWhere";
cmd.Parameters.AddWithValue("@strWhere", strWhere);
cmd.CommandText = strSql;
OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Response.Write(dr["Author"] + " : " + dr["Title"] + "<br>");
}
con.Close();
con.Dispose();
相关文章
.NET Core基于EMIT编写的轻量级AOP框架CZGL.AOP
这篇文章介绍了.NET Core基于EMIT编写的轻量级AOP框架CZGL.AOP,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-02-02
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
本篇文章主要介绍了免费开源的DotNet二维码操作组件ThoughtWorks.QRCode,非常具有实用价值,有兴趣的同学可以来了解一下。2016-12-12
浅谈ASP.NET MVC 防止跨站请求伪造(CSRF)攻击的实现方法
下面小编就为大家分享一篇浅谈ASP.NET MVC 防止跨站请求伪造(CSRF)攻击的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-01-01


最新评论