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”的类型初始值设定项引发异常。存储过程: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)上面是存储过程。急啊。。

解决方案 »

  1.   

    new SqlParameter("@Level",SqlDbType.Int, 4),
    new SqlParameter("@Sort",SqlDbType.Int, 4)par[0].value=Level;
    par[1].value = IsUp ? 1:0;这样试试呢
      

  2.   

    new SqlParameter("@Sort",IsUp ? 1:0)这里为0 的时候会出问题 如果数据库里是 bit型就直接用new SqlParameter("@Sort",IsUp)
      

  3.   

    不好意思,刚才没看到下面。数据库里不是bit型就像二楼那样
    或者
    new SqlParameter("@Sort",IsUp ? 1:Convert.toInt32(0))
      

  4.   

    回一楼:我先前就是按你那样写的,调试的时候也是同样的异常,然后才改成现在这个样子的。
    回二楼:执行存储过程那个方法没有问题,我检查了N遍的。
    回三楼:
    par[1].value = IsUp ? 1:0;  这个值只是我在存储过程中做判断执行不同的SQL语句用的。可以看上面的存储过程。
      

  5.   

    这个异常跟存储过程本身不会有什么关系。把你的 DbHelperSQL.RunProcedure 贴出来。
      

  6.   

    你试试看在sql server2005里的查询分析器里能不能正常执行?
      

  7.   

    public static DataSet GetList(int Level,bool IsUp) { SqlParameter[] par =new SqlParameter[] { new SqlParameter("@Level",SqlDbType.Int,Level), new SqlParameter("@Sort",SqlDbType.Int,IsUp ? 1:Convert.toInt32(0)) }; return DbHelperSQL.RunProcedure("UP_My_Config_GetList", par, "ds"); }
      

  8.   

    执行存储过程代码块 /// <summary>
            /// 执行存储过程
            /// </summary>
            /// <param name="storedProcName">存储过程名</param>
            /// <param name="parameters">存储过程参数</param>
            /// <param name="tableName">DataSet结果中的表名</param>
            /// <returns>DataSet</returns>
            public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    DataSet dataSet = new DataSet();
                    connection.Open();
                    SqlDataAdapter sqlDA = new SqlDataAdapter();
                    sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
                    sqlDA.Fill(dataSet, tableName);
                    connection.Close();
                    return dataSet;
                }
            }