日期:2014-05-20  浏览次数:20674 次

sql语句与SqlParameter

string sql = "select * from RoomType where TypeName like '%@a%'";
            SqlParameter[] p = new SqlParameter[] { new SqlParameter("@a", roomTypeName) };

改成
string sql = "select * from RoomType where TypeName like '%"+roomTypeName+"%'";
就能达到效果,不改为什么是错的!
------解决方案--------------------
你再多帖几行代码吧!

你是不是只是设置了参数,并没有使用将这个参数应用到SQL 查询呢?
------解决方案--------------------
SqlParameter进行了参数封装,你那里推断的SqlDbType是字符类型的
到最终的SQL中可能就变成了like '%'rotypeName'%'这只是我的猜测
建议你去SQL Server中用SqlProfiler监视看一下执行的最终查询就知道了

------解决方案--------------------
引用:

string sql = "select * from RoomType where TypeName like '%@a%'";
            SqlParameter[] p = new SqlParameter[] { new SqlParameter("@a", roomTypeName) };

改成
string sql = "select * from Roo……


SqlParameter[] p = new SqlParameter { new SqlParameter("@a", SqlDbType.类型) };
SQLCMDpas[0].Value=参数
我习惯把这个东西分开写~~~写成BLL层的一个方法

------解决方案--------------------
select * from table where Content LIKE @wd Order by V_ID DESC

cmd.SelectCommand.Parameters.Add("@wd", OleDbType.Char, 10).Value = "%" + Function.Basic.Rq("wd") + "%";


% %号一起放Parameters里面
------解决方案--------------------
string sql = "select * from RoomType where TypeName like '%"+@a+"%'";  SqlParameter[] p = new SqlParameter[] { new SqlParameter("@a", roomTypeName) };


你这样试试

------解决方案--------------------
写法上没看出来有什么错误,

可能是参数里有关键字或特殊字符
------解决方案--------------------
string sql = "select * from RoomType where TypeName like @a";
  SqlParameter[] p = new SqlParameter[] { new SqlParameter("@a", "%"+roomTypeName+"%") };

重点在这里 %也要放进Parameter里面
SqlParameter("@a", "%"+roomTypeName+"%")

------解决方案--------------------

string sql = "select * from RoomType where TypeName like '%@a%'";
   SqlParameter[] p = new SqlParameter[] { new SqlParameter("@a", roomTypeName) };

改成
string sql = "select * from RoomType where TypeName like '%"+roomTypeName+"%'";
/////////
string sql = "select * from RoomType where TypeName like '"+roomTypeName+"'";
通过 sqlparameter  是为了参数化查询 为了防止字符串的注入攻击  改成这样可以使 就是安全性 相对较差会拼接成查询字符串在数据库中进行执行 用了sqlparmeter  参数不在座位查询字符串的一部分进行执行  他就被作为一个字符串来对待  
------解决方案--------------------