SQL Server error: ExecuteNonQuery: Connection property has not been initialized

给你一囗甜甜゛ 提交于 2019-12-23 03:44:04

问题


I am trying to develop a sample registration page using ASP.Net and C#. I am calling a stored procedure to insert the data to database. My database is SQL Server 2008.

This is my code:

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;
    }

I am getting the error message

ExecuteNonQuery: Connection property has not been initialized.

I am getting this error at cmd.ExecuteNonQuery();

Please help me.

My stored procedure is

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

回答1:


You haven't associated your command cmd with your SqlConnection, that is why you are getting the error.

You need to specify:

cmd.Connection = con;

in your submitdata() method.

Since SqlCommand implements IDisposable, its better if you use it within using block like:

using (SqlCommand cmd = new SqlCommand())
{

    cmd.Parameters.Clear();
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "insertdata";
    cmd.Connection = con;
    .... your code

}


来源:https://stackoverflow.com/questions/14618941/sql-server-error-executenonquery-connection-property-has-not-been-initialized

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!