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();

相关文章

  • 用ASP.NET做的个性化的邮件发送系统

    用ASP.NET做的个性化的邮件发送系统

    如果要你用ASP来做一个邮件发送系统,你一定认为这是一个比较复杂的工作。其实也的确是这样。但当他的后继产品ASP.NET被推出以后,他的强大功能就使的这一切就变的相对简单了。真的这样神奇么?我们就通过ASP.NET做一个邮件发送系统,看看到底有什么奥秘,是不是真的简单。
    2008-02-02
  • ASP.NET MVC学习之NuGet在VS中的运用浅谈

    ASP.NET MVC学习之NuGet在VS中的运用浅谈

    这篇文章主要给大家介绍了关于ASP.NET MVC学习之NuGet在VS中运用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧。
    2018-01-01
  • asp.net生成字母和数字混合图形验证码

    asp.net生成字母和数字混合图形验证码

    这篇文章主要为大家详细介绍了asp.net生成字母和数字混合图形验证码的实现方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • 子窗口给父窗口赋值实现思路及案例演示

    子窗口给父窗口赋值实现思路及案例演示

    今天学习一下javascript实现从父窗口打开一个子窗口,在子窗口处理一些结果之后,把结果赋值于父窗口的文本框内,接下来介绍实现方法,感兴趣的朋友可以了解下,希望本文对你有所帮助
    2013-01-01
  • ASP.NET MVC分页问题解决

    ASP.NET MVC分页问题解决

    这篇文章主要为大家详细介绍了ASP.NET MVC分页问题的解决方法,Ajax.Pager分页的使用注意事项,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • asp.net中调用存储过程的方法

    asp.net中调用存储过程的方法

    这篇文章主要介绍了asp.net中调用存储过程的方法,结合实例形式分析了存储过程的建立与asp.net调用存储过程的相关技巧,需要的朋友可以参考下
    2016-05-05
  • asp.net的cms 绑定数据篇

    asp.net的cms 绑定数据篇

    半年前,在博客园写了asp.net cms 的几篇文章,那时候,是我的cms还没做出来。都是些夸夸其谈,今天,写这篇,是想感慨一下
    2012-12-12
  • asp.net获取ListView与gridview中当前行的行号

    asp.net获取ListView与gridview中当前行的行号

    这篇文章主要介绍了asp.net获取ListView与gridview中当前行的行号,实例分析了asp.net针对ListView与gridview获取行号的实现技巧,需要的朋友可以参考下
    2016-01-01
  • ScriptManager.RegisterStartupScript()方法在ajax页面无效的解决方法

    ScriptManager.RegisterStartupScript()方法在ajax页面无效的解决

    ScriptManager.RegisterStartupScript()方法在ajax页面无效的解决方法
    2010-03-03
  • 使用aspnet_regiis.exe重新注册.NET Framework

    使用aspnet_regiis.exe重新注册.NET Framework

    本文主要介绍使用aspnet_regiis.exe重新注册.NET Framework的方法,简单实用,有需要的朋友拿去用吧。
    2016-05-05

最新评论