sql小问题

wangjia1991 2014-10-14 03:08:39
string swhere = "";
IDataParameter[] para=null;
string sql = "select * from TBL_S_GroupUser where 1=1";
if (groupName != "")
{
swhere = " and groupUserName like " + "'%" + "@groupName" + "%'";
sql += swhere;
para = new IDataParameter[] { new SqlParameter("@groupName", groupName), };
}
return dba.ExecuteDataSet(sql, CommandType.Text, para).Tables[0];
例如:结果groupName="sh",但是结果集合记录为0个,而select * from TBL_S_GroupUser where 1=1 and groupUserName like '%sh%' 在数据库中执行有一条记录,为什么出这样的问题。
...全文
147 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gw6328 2014-10-17
  • 打赏
  • 举报
回复
一个是=一个like条件不一样,所以结果不一样。
kevin87923 2014-10-16
  • 打赏
  • 举报
回复
  swhere = " and groupUserName like '%@groupName%'";
reenjie 2014-10-15
  • 打赏
  • 举报
回复
引用 楼主 wangjia1991 的回复:
string swhere = ""; IDataParameter[] para=null; string sql = "select * from TBL_S_GroupUser where 1=1"; if (groupName != "") { swhere = " and groupUserName like " + "'%" + "@groupName" + "%'"; sql += swhere; para = new IDataParameter[] { new SqlParameter("@groupName", groupName), }; } return dba.ExecuteDataSet(sql, CommandType.Text, para).Tables[0]; 例如:结果groupName="sh",但是结果集合记录为0个,而select * from TBL_S_GroupUser where 1=1 and groupUserName like '%sh%' 在数据库中执行有一条记录,为什么出这样的问题。
改成下面的,試一下 swhere = " and groupUserName like " + "'%'" + "@groupName" + "'%'";
唐诗三百首 2014-10-14
  • 打赏
  • 举报
回复
设个断点,查看变量sql的值.
还在加载中灬 2014-10-14
  • 打赏
  • 举报
回复
你试下
string swhere = "";
            IDataParameter[] para=null;
            string sql = "select * from TBL_S_GroupUser where 1=1";
            if (groupName != "")
            {
                swhere = " and groupUserName like " + "'%'+@groupName+'%'";
                sql += swhere;
                para = new IDataParameter[] { new SqlParameter("@groupName", groupName), };
            }
swhere = " and groupUserName like " + "'%'+@groupName+'%'";
xiaodongni 2014-10-14
  • 打赏
  • 举报
回复
swhere = " and groupUserName like " + "'%" + "@groupName" + "%'"; 这里写错了。变量不要加双引号的。你可以调试下。在 para = new IDataParameter[] { new SqlParameter("@groupName", groupName), }; 这一行前面加个断点。看看SQL的值。不是你要的结果 。
卖水果的net 版主 2014-10-14
  • 打赏
  • 举报
回复
Profiler 一下吧,感觉,你用 .NET 拼出来的语句和你在 SQL Server 中执行的,不是一回事儿。
wangjia1991 2014-10-14
  • 打赏
  • 举报
回复
参数groupName,就是txtKeyword.Text.Trim()的值传过来的,最后我的得到的sql值是:select * from TBL_S_GroupUser where 1=1 and groupUserName like '%@groupName%', 参数@groupName值是groupName的值("sh")。这句sql语句放到数据库中就没问题。 你在仔细看看是什么问题?我是看不出来。大神
xiaodongni 2014-10-14
  • 打赏
  • 举报
回复
trim(groupName) != "" 试试。还有貌似你吧GROUPNAME和groupusername搞混了。

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧