【问题标题】:SQL Server error: ExecuteNonQuery: Connection property has not been initializedSQL Server 错误:ExecuteNonQuery:连接属性尚未初始化
【发布时间】:2013-01-15 03:36:47
【问题描述】:

我正在尝试使用 ASP.Net 和 C# 开发示例注册页面。我正在调用存储过程将数据插入数据库。我的数据库是 SQL Server 2008。

这是我的代码:

public partial class Sample : System.Web.UI.Page
{
   SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnection"].ToString());
   string str;

protected void Page_Load(object sender, EventArgs e)
{
    rbt_Male.Checked = true;
}

protected void btn_Submit_Click(object sender, EventArgs e)
{
    string @Name = txtbx_Name.Text;
    string @Gender_male = rbt_Male.Text;
    string @Gender_Female = rbt_Female.Text;
    string @Email = txtbx_Email.Text;
    DateTime @Dob = Convert.ToDateTime(txt_Dob.Text);
    submitdata();
}

protected void submitdata()
{
    try
    {
        SqlCommand cmd = new SqlCommand();
        cmd.Parameters.Clear();
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "insertdata";

        if (rbt_Male.Checked)
        {
            cmd.Parameters.AddWithValue("@Name", txtbx_Name.Text);
            cmd.Parameters.AddWithValue("@Gender_Male", rbt_Male.Text);
            cmd.Parameters.AddWithValue("@Email", txtbx_Email.Text);
            cmd.Parameters.AddWithValue("@Dob", Convert.ToDateTime(txt_Dob.Text));
        }
        else if (rbt_Female.Checked)
        {
            cmd.Parameters.AddWithValue("@Name", txtbx_Name.Text);
            cmd.Parameters.AddWithValue("@Gender_Female", rbt_Male.Text);
            cmd.Parameters.AddWithValue("@Email", txtbx_Email.Text);
            cmd.Parameters.AddWithValue("@Dob", Convert.ToDateTime(txt_Dob.Text));
        }

        if (con.State == ConnectionState.Closed)
            con.Open();

        cmd.ExecuteNonQuery();

        lbl_Errormsg.Visible = true;
        lbl_Errormsg.Text = "Record Inserted Successfully";
        con.Close();
    }
    catch (Exception ex)
    {
        lbl_Errormsg.Visible = true;
        lbl_Errormsg.Text = ex.Message;
    }

我收到错误消息

ExecuteNonQuery:连接属性尚未初始化。

我在cmd.ExecuteNonQuery(); 收到此错误

请帮帮我。

我的存储过程是

ALTER Procedure insertdata
(
 @Name Varchar(20),
 @Gender Varchar(6),
 @Email Varchar(20),
 @Dob date
) 
As
 Begin
   Insert into samplelogintable (Name, Gender, Email, Dob)
   Values(@Name, @Gender, @Email, @Dob)
 End

【问题讨论】:

    标签: c# asp.net sql-server-2008 insertion


    【解决方案1】:

    您没有将您的命令cmd 与您的 SqlConnection 关联,这就是您收到错误的原因。

    您需要指定:

    cmd.Connection = con;
    

    在您的 submitdata() 方法中。

    由于 SqlCommand 实现了IDisposable,如果你在 using 块中使用它会更好:

    using (SqlCommand cmd = new SqlCommand())
    {
    
        cmd.Parameters.Clear();
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "insertdata";
        cmd.Connection = con;
        .... your code
    
    }
    

    【讨论】:

    • 为了确认,我必须将代码从“if (rbt_Male.Checked)”写到try块的末尾,对吗?
    • @Pritam,您可以在执行之前将连接与命令关联,您甚至可以在命令的构造函数中指定连接以及命令文本。但请记住在执行之前将连接与命令相关联
    • 谢谢伙计,现在我可以理解错误了,现在它工作正常。非常感谢:)
    • 谢谢。其实我是stackoverflow的新手。谢谢你的建议。以后我会记住这一点的。
    • 我现在有一些疑问,如果你有空,可以请告诉我吗?实际上,我在通过存储过程将一些数据插入数据库时​​遇到了一些问题。提前致谢。
    猜你喜欢
    • 2013-08-03
    • 1970-01-01
    • 2023-04-04
    • 2012-05-03
    • 2011-07-22
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多