2 coudy coudy_ 于 2016.03.02 17:38 提问

MySql参数化查询结果为空

背景是要做一个查询用户和用户权限的用户中心,使用Mysql数据库。
查询其他表都OK,唯独权限表通过代码查询后结果为空。

先上表结构和代码:

表结构
CREATE TABLE Permission (
PermissionID varchar(3) ,
PermissionName varchar(100) ,
CreateDate datetime ,
CreateUserID char(6) ,
UpdateDate datetime ,
UpdateUserID char(6) ,
ValidFlag int(1)
)

代码

 private const string SQL_GetPermissionInfo = @"
                  SELECT 
                        PermissionID 
                       ,PermissionName 
                       ,CreateDate 
                       ,CreateUserID 
                       ,UpdateDate 
                       ,UpdateUserID 
                       ,ValidFlag 
                   FROM
                        Permission
                   WHERE
                        1=1 ";
    public static DBResponse GetPermissionInfo(DBRequest dbRequest, string PermissionID)
        {
            StringBuilder sqlStr = new StringBuilder();
            sqlStr.Append(SQL_GetPermissionInfo);
            MySqlParameter[] paras = null;
            if (!string.IsNullOrEmpty(PermissionID))
            {
                paras = new MySqlParameter[]{
                    new MySqlParameter("@PermissionID ",PermissionID )
                };
                sqlStr.Append(" and PermissionID  = @PermissionID ");
            }
            return ExecuteDataset(dbRequest, sqlStr.ToString(), paras);
        }

1、跟@ 和 ? 没有关系,这个已经实际测试过
2、连接串上有加Allow User Variables=True,不加会报错(Fatal error encountered during command execution.)

有人怀疑是表的问题,可实在不知道问题出在什么地方
希望有高手帮忙解决
感谢

2个回答

coudy_
coudy_   2016.03.10 09:42
已采纳

问题已经解决,参数化的过程中,担当作业的人多写了一个空格
new MySqlParameter(**"@PermissionID "**,PermissionID )

devmiao
devmiao   Ds   Rxr 2016.03.02 19:31
coudy_
coudy_ 是指参数带有敏感字符所以被拦截或是转译了么? 这个程序有多个查表的类 都是通过参数化实现的查询 唯独这张表不行
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
vb.net sql参数化查询空参数查询全部解决方案
最近在写一个程序,用户界面有多个查询条件,如果条件不输则不加入条件,因考虑注入安全问题,不能直接拼接字符串,必须参数化查询,网上也没有找到关于这方面的案例,自己最后想了一下,用最简单原始的方法拼接语句再判断条件添加Parameters实现了功能。
mysql将查询结果为空的栏目转为0
问题提出:当查询数据库的时候,
参数化查询 但未提供该参数(将null插入数据库)
当你是使用参数化查询时为参数赋值时,比如command.Parameters.Add("@a",SqlDbType.Text,30).Value=a;当a=null是将报错: 错参数化查询 '(@a varchar(100)....' 需要参数 '@a',但未提供该参数 只是因为你给a的值为null,而数据库中的null(空)是System.DBNull 类型的不是同一类。所以在插
MYSQL查询结果为空或null就返回"null"
SELECT if(IFNULL(superorgcode,"")="","null",superorgcode) superorgcode FROM `tborg` 
MySQL的JDBC判断查询结果是否为空以及获取查询结果行数的方法
判断查询结果是否为空 在JDBC中没有方法hasNext去判断是否有下一条数据,但是我们可以使用next方法来代替。 看next方法的官方解释:      boolean next() throws Moves the cursor forward one row from its current position. A ResultSet cursor is in
mysql not in子查询返回结果为空
今天写sql语句的时候,希望通过not in子查询来限制查询结果,实际SQL语句如下:  select  ID as id, TYPE_CODE as typeCode , TYPE_NAME as typeName , PARENT_ID as parentsId , STYLE as style , LEVELS as levels from type_code whe
注意mysql的not in查询值中存在null值时返回的查询结果会一直为空
现在有数据库表是当我们使用这样的查询语句时:select * from user where username not in ( select username from user where id != 2 )这时子查询的结果包含了null值,所以结果会一直返回空查询,而不会返回预期的id为2这一行我们可以稍微修改一下查询形式:select * from user where usernam...
Mysql数据库,查询结果为空值,如何处理?
当sql查出空值的时候,如果想要获取,其中的值可能会出错!a=res.getString("字段")   如果该字段的值是null,就会报错!所以需要在取字段值的时候做try{}catch{}处理!try{a=res.getString("字段");}catch{a="";}如果try出错,赋值一个默认值为,空字符串!...
sql查询语句中用like中用参数化查询
今天终于学会怎么在like中用参数化查询啦。。哈哈。。再也不用担心sql注入了。。。
mysql存储过程判断不为空和不为空,查询结果赋值变量
直接看例子 delimiter // create procedure proc__pre_activity_scan() begin declare p_tid int(10); set @p_tid=(select tid from hac_actity limit 0,1); if(@p_tid is not null) then select * from p