asp.net Parameters.AddWithValue方法在SQL语句的 Where 字句中的用法


他的写法是这样的:

复制代码 代码如下:

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



相关阅读:
自动备份mssql server数据库并压缩的批处理脚本
Vista系统换XP系统出现花屏的解决方法
fedora phpMyAdmin 安装方法及介绍
ASP.net(VB)编程入门进阶 Ⅲ
Ajax: 一种建立Web应用的新途径
asp下实现IP限制函数代码
ASP vbs 代码大小写规范
手动制作Oracle9i/10g客户端的实用方法
利用onresize使得div可以随着屏幕大小而自适应的代码
js 数值项目的格式化函数代码
Windows Server 2008服务器状态备份\还原攻略
图解 CSS (3): padding(内边距)、margin(外边距)
linux下如何设置IP地址并激活
dedecms按栏目分类搜索功能的实现方法
快速导航

Copyright © 2016 phpStudy |