"executenonquery connection property has not been initialized"

asp.net, c#, sql, sql-server, sql-update

Solution

the problem with your current code is that you have not set the `Connection` property of the `SqlCommand` object. Try this,

SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;

and you must also parameterized the values set on the `name`

String Name = Request.QueryString["Name"];
cmd.CommandText = "UPDATE navaznost_ukolu SET finish=@finish where Name=@name";
cmd.Parameters.Add(new SqlParameter("@finish", finish));
cmd.Parameters.Add(new SqlParameter("@name", Name));

FULL CODE

string finish = DropDownListFi.SelectedValue;
String Name = Request.QueryString["Name"];
string connStr = @"DataSource=dbedu.cs.vsb.cz\SQLDB;
                   Persist Security Info=True;
                   User ID=*****;
                   Password=*******";
string sqlStatement = @"UPDATE navaznost_ukolu 
                        SET    finish = @finish 
                        WHERE  Name = @Name";

using (SqlConnection conn = new SqlConnection(connStr))
{
    using(SqlCommand cmd = new SqlCommand())
    {
        cmd.Connection = conn;
        cmd.CommandText = sqlStatement;
        cmd.CommandType = CommandType.Text;

        cmd.Parameters.Add(new SqlParameter("@finish", finish));
        cmd.Parameters.Add(new SqlParameter("@name", Name));

        try
        {
            conn.Open();
            cmd.ExecuteNonQuery();
        }
        catch(SqlException e)
        {
            // do something with the exception
            // do not hide it
            // e.Message.ToString()
        }
    }
}

For proper coding

- use `using` statement for propr object disposal

- use `try-catch` block to properly handle objects

Problem

``` SqlConnection cn = new SqlConnection(@"DataSource=dbedu.cs.vsb.cz\SQLDB;Persist Security Info=True;User ID=*****;Password=*******"); SqlCommand cmd = new SqlCommand(); string finish = DropDownListFi.SelectedValue; cn.Open(); String Name = Request.QueryString["Name"]; cmd.CommandText = "UPDATE navaznost_ukolu SET finish=@finish where Name='" + Name + "'"; cmd.Parameters.Add(new SqlParameter("@finish", finish)); cmd.ExecuteNonQuery(); cmd.Clone(); ``` The error message Executenonquery connection property has not been initialized.

Original source