日期:2014-05-18  浏览次数:20961 次

C#执行存储过程异常
C# code

public static DataSet GetList(int Level,bool IsUp)
        {
            SqlParameter[] par =new SqlParameter[] {
                                 new SqlParameter("@Level",Level),
                                 new SqlParameter("@Sort",IsUp ? 1:0)
            };

            return DbHelperSQL.RunProcedure("UP_My_Config_GetList", par, "ds");
        }



单步执行到return DbHelperSQL.RunProcedure("UP_My_Config_GetList", par, "ds");这句抛出异常:
“My.DBUtility.DbHelperSQL”的类型初始值设定项引发异常。

存储过程:
SQL code

ALTER PROCEDURE [dbo].[UP_My_Config_GetList]
 @Level int,
 @Sort int
 AS 
    declare @strSql varchar(200)
    set @strSql='SELECT ID,cTitle,cKey,cValue,iLevel FROM [My_Config] where iLevel='+ cast(@Level as varchar(10))
     if @Sort = 1 
        set @strSql=@strSql+' order by id desc'
    exec (@strSql)


上面是存储过程。

急啊。。

------解决方案--------------------
new SqlParameter("@Level",SqlDbType.Int, 4),
new SqlParameter("@Sort",SqlDbType.Int, 4)

par[0].value=Level;
par[1].value = IsUp ? 1:0;

这样试试呢
------解决方案--------------------
检查DbHelperSQL.RunProcedure方法
------解决方案--------------------
new SqlParameter("@Sort",IsUp ? 1:0)

这里为0 的时候会出问题 如果数据库里是 bit型就直接用new SqlParameter("@Sort",IsUp)
------解决方案--------------------
不好意思,刚才没看到下面。数据库里不是bit型就像二楼那样
或者
new SqlParameter("@Sort",IsUp ? 1:Convert.toInt32(0))
------解决方案--------------------
这个异常跟存储过程本身不会有什么关系。

把你的 DbHelperSQL.RunProcedure 贴出来。
------解决方案--------------------
在查询分析器支持存储过程看看
------解决方案--------------------
你试试看在sql server2005里的查询分析器里能不能正常执行?

------解决方案--------------------
检查DbHelperSQL.RunProcedure