当前位置:编程学习 > C#/ASP.NET >>

求助:{Fill: SelectCommand.Connection 属性尚未初始化}的问题

想测试一个存储过程,结果出现了如下错误,
Fill: SelectCommand.Connection 属性尚未初始化
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
异常详细信息: System.InvalidOperationException: Fill: SelectCommand.Connection 属性尚未初始化。
源错误: System.InvalidOperationException: Fill: SelectCommand.Connection 属性尚未初始化。
行 161:            cmd.CommandType = CommandType.StoredProcedure;
行 162:            cmd.CommandText = sql;
行 163:            cmd.Parameters.AddRange(param);
行164:            SqlDataAdapter da = new SqlDataAdapter(cmd);     
行 165:            DataTable dt = new DataTable();
 

 
代码如下:
 public class DBHelper
    {
        private static SqlConnection conn=null;

        #region 获取数据库连接Conn
        public static SqlConnection Conn
        {   get
            {       string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["sql"].ConnectionString;
                if (conn == null)
                { conn = new SqlConnection(strConn);
                  conn.Open();
                }
                if (conn.State == ConnectionState.Closed)
                {  conn.Open();
                }
                if (conn.State == ConnectionState.Broken)
                {
                    conn.Close();
                    conn.Open();
                }
                return DBHelper.conn;
            }
        }
        public static DataTable GetDatatableByProc(string sql, IDataParameter[] param)
        {
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = Conn;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = sql;
            cmd.Parameters.AddRange(param);
            SqlDataAdapter da = new SqlDataAdapter(cmd);     
            DataTable dt = new DataTable();
            da.Fill(dt);
            return dt;
        }
}
前台:
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string sql ="proc_page";
        SqlParameter[] param = new SqlParameter[9];
        param[0]=new SqlParameter("@tblName","jobs");
        param[1]=new SqlParameter("@fldName","*");
        param[2]=new SqlParameter("@pageSize",5);
        param[3]=new SqlParameter("@page ",1);
        param[4]=new SqlParameter("@fldSort",null);
        param[5]=new SqlParameter("@Sort",0);
        param[6]=new SqlParameter("@strCondition",null);
        param[7]=new SqlParameter("@ID","job_id");
        param[8]=new SqlParameter("@Dist",0);
        DataTable dt = RockyDAL.DBHelper.GetDatatableByProc(sql, param);
       this.GridView1.DataSource = dt;
       this.GridView1.DataBind();
        
    }
}
请大家帮忙看怎么解决,谢谢各位 --------------------编程问答-------------------- 0分,你可真行兄弟,

个人愚见,你的存储过程数组里那些参数都是允许空的? --------------------编程问答-------------------- SqlCommand cmd = new SqlCommand();
改成
SqlCommand cmd = conn.CreateCommand()
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,