如下代码:我把 PageItem当做id值传入时就好使,而传入strWhere时就不能传入参数呢?public partial class testPage1 : System.Web.UI.Page
{
private int PageItem = 10;
private OleDbConnection con = null;
protected OleDbCommand cmd = null;
protected void Page_Load(object sender, EventArgs e)
{
bindData();
}
private void bindData()
{
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\City.mdb;";
con = new OleDbConnection(connectionString);
con.Open();
cmd = new OleDbCommand();
cmd.Connection = con;
string strSql = string.Empty; //strSql = "SELECT TOP "+PageItem.ToString()+" name FROM area WHERE id=@id";
//cmd.Parameters.AddWithValue("@id", PageItem); 这个就好使 string strWhere = "'%美%'";
strSql = "SELECT * FROM area Where [name] like @strWhere";//这个就不好使 cmd.Parameters.AddWithValue("@strWhere", strWhere);
cmd.CommandText = strSql;
OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Response.Write(dr[0] + "<br>");
}
}
}
"SELECT * FROM area Where [name] like N'%'+@strWhere+'%'"
select * from area where name like '%aa%'
%% 是存在于单引号里面的
也就是说当用占位符的时候,%%也是存在'' 中
string strWhere = "'%美%'";
上面的就不行string sql="select * from area where name like '%"+@+"%'";
不要自己加单引号
如果你给的数据类型是string
那么数据库处理的时候 会自动加上的
你可以跟踪一下
最后@strWhere的值是''%美%''这样子
如果你加了单引号
最终的值编程'''%美%'''
拼接出来就报错了