2013-04-06 169 views
3
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 [email protected] where Name='" + Name + "'"; 
cmd.Parameters.Add(new SqlParameter("@finish", finish)); 
cmd.ExecuteNonQuery(); 
cmd.Clone(); 

错误消息“的ExecuteNonQuery连接属性尚未初始化”

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

回答

3

与您当前的代码的问题是,你没有设置SqlCommand对象的Connection财产。试试这个,

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

,你还必须参数上name

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

全码

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() 
     } 
    } 
} 

设定值正确编码

  • 使用using语句propr对象处理
  • 使用try-catch块妥善处理对象
+0

谢谢。有用。 – Mirek 2013-04-06 16:43:39

+0

不客气':D' – 2013-04-06 16:44:45

2

的错误是不言自明的,你有没有分配给该命令的连接。您可以使用构造函数:

using(var cn = new SqlConnection(@"DataSource=dbedu.cs.vsb.cz\SQLDB;Persist Security Info=True;User ID=*****;Password=*******")) 
using(var cmd = new SqlCommand(
    "UPDATE navaznost_ukolu SET [email protected] where [email protected]" 
    , cn)) 
{ 
    string finish = DropDownListFi.SelectedValue; 
    cn.Open(); 
    String Name = Request.QueryString["Name"]; 
    cmd.Parameters.AddWithValue("@finish", finish); 
    cmd.Parameters.AddWithValue("@Name", Name); 
    cmd.ExecuteNonQuery(); 
} 

请注意,我还用于Nameusing语句的SQL参数,以确保任何事情得到处理,即使在异常的情况下,实施IDisposable。这也将关闭连接。

相关问题