关于C#SqlParameter传参进行模糊查询遇到的问题!
2017-05-24 02:56
281 查看
今天写作业碰到的问题,自己纠结,检查折腾了半小时,觉得实在不行了,开始百度,百度上也没有太确切的答案
,也不是没有答案,就是太难找到了,并且大神讲的太深奥,原理是没看懂,但是解决办法学会了,下面贴代码
StringBuilder strSql = new StringBuilder();
strSql.AppendLine("select stu.studentno,sub.subjectid,r.StudentResult,r.examdate,r.id");
strSql.AppendLine("from student as stu inner join result as r on (stu.studentNo=r.studentNo)");
strSql.AppendLine("inner join subject as sub on(r.subjectid=sub.subjectid) where 1=1");
if (subjectId != 0)
{
strSql.AppendLine("and r.subjectid=@subjectid");
}
if (name != "")
{
strSql.AppendLine("and stu.studentname like @name
");
}
using( SqlCommand cmd=new SqlCommand(strSql.ToString(),dbHelper.Connection))
{
try
{
SqlParameter[] parameters = {
new SqlParameter("@subjectid",subjectId),
new SqlParameter("@name","%"+name+"%")
};
问题在红色代码部分,解决办法在绿色代码部分,
先说红色代码的问题把and stu.studentname like ‘%@name%’ 如果这里这样写,SqlCommand执行的时候会无法识别参数,
会直接把sql语句也构建成like ‘%@name%’ 等于就是在根据字符串@name在数据库模糊查找,而不是@name真实的值
解决办法就是直接在@name的值内进行拼接,也就是绿色代码的部分new SqlParameter("@name","%"+name+"%")直接在
这里进行拼接,然后构建Sql语句的时候like后不要带单引号就OK了。
,也不是没有答案,就是太难找到了,并且大神讲的太深奥,原理是没看懂,但是解决办法学会了,下面贴代码
StringBuilder strSql = new StringBuilder();
strSql.AppendLine("select stu.studentno,sub.subjectid,r.StudentResult,r.examdate,r.id");
strSql.AppendLine("from student as stu inner join result as r on (stu.studentNo=r.studentNo)");
strSql.AppendLine("inner join subject as sub on(r.subjectid=sub.subjectid) where 1=1");
if (subjectId != 0)
{
strSql.AppendLine("and r.subjectid=@subjectid");
}
if (name != "")
{
strSql.AppendLine("and stu.studentname like @name
");
}
using( SqlCommand cmd=new SqlCommand(strSql.ToString(),dbHelper.Connection))
{
try
{
SqlParameter[] parameters = {
new SqlParameter("@subjectid",subjectId),
new SqlParameter("@name","%"+name+"%")
};
问题在红色代码部分,解决办法在绿色代码部分,
先说红色代码的问题把and stu.studentname like ‘%@name%’ 如果这里这样写,SqlCommand执行的时候会无法识别参数,
会直接把sql语句也构建成like ‘%@name%’ 等于就是在根据字符串@name在数据库模糊查找,而不是@name真实的值
解决办法就是直接在@name的值内进行拼接,也就是绿色代码的部分new SqlParameter("@name","%"+name+"%")直接在
这里进行拼接,然后构建Sql语句的时候like后不要带单引号就OK了。
相关文章推荐
- 关于对日期类型的数据进行模糊查询的问题
- Oracle、Mysql、MS sql中关于模糊查询问题
- sql模糊查询遇到问题,求助各路大神,SOS
- 使用mybatis遇到的关于条件查询">"以及if test传参的使用问题
- 在ORM框架中使用原生sql语句进行聚合查询遇到的问题
- 做项目时遇到的几个关于C#和SQL的细节问题(二)
- 关于Hibernate在使用原生SQL语句多表查询所遇到的问题
- 利用postgresql进行缓冲区内对象检测过程中遇到的sql查询效率问题解决方案记录
- 关于sql的模糊查询的问题
- 关于sql模糊查询的下划线问题
- pl/sql developer遇到关于查询显示的问题
- 关于SqlParameter中IN子句查询的问题
- 做项目时遇到的几个关于C#和SQL的细节问题(一)
- ACCESS模糊查询like的解决方法&&SQL查询语句通配符问题
- 一个关于SQL的问题,做做看,好想跟经常遇到的有点不同
- 关于SQL时间类型的模糊查询
- 关于LINQ查询中不能直接按二个或二个以上值进行分组的问题
- 动态SQL模糊查询语句(存储过程)中关于百分号%的处理
- SQL中对日期进行模糊查询的方法
- 今天在csdn上遇到一个问题,是关于sql数据行列转换的,我的写法如下: