为什么我在这里得到“连接属性尚未初始化”?

时间:2013-12-11 18:24:59

标签: c# .net ado.net

1.ExecuteNonQuery:连接属性尚未初始化“。 2.这是我执行以下代码的错误。

protected void Button1_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = @"Data Source=Sadiq;Initial Catalog=rafi;Integrated Security=True";
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "student";
            int studid = Convert.ToInt32(TextBox1.Text);
            string name = TextBox2.Text;
            int age = Convert.ToInt32(TextBox3.Text);
            string school = TextBox4.Text;
            string clas = TextBox5.Text;
            int marks = Convert.ToInt32(TextBox6.Text);
            string grade = TextBox7.Text;
            cmd.Parameters.Add(new SqlParameter("@stud_id", studid));
            cmd.Parameters.Add(new SqlParameter("@name", name));
            cmd.Parameters.Add(new SqlParameter("@age", age));
            cmd.Parameters.Add(new SqlParameter("@school", school));
            cmd.Parameters.Add(new SqlParameter("@class", clas));
            cmd.Parameters.Add(new SqlParameter("@marks", marks));
            cmd.Parameters.Add(new SqlParameter("@grade", grade));
            cmd.ExecuteNonQuery();
            conn.Close();
}

1 个答案:

答案 0 :(得分:5)

你需要这样做:

cmd.Connection = conn;

在执行查询之前。它需要一个连接来执行。

您还可以将其重构为:

SqlCommand cmd = new SqlCommand("student", conn);
cmd.CommandType = CommandType.StoredProcedure;

而不是:

SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "student";
cmd.Connection = conn;

该重载通过构造函数设置CommandTextConnection属性。

您还需要在using语句中包装所有这些ADO.NET对象。我在blog post of mine上详细解释。