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