日期:2014-05-17  浏览次数:20864 次

SqlCommand在执行完ExecuteReader()后没有关闭是不是不能再来执行ExecuteNonQuery()
static void ChangeTime(DateTime start,DateTime end,SqlConnection sql_conn,string table_name)
  {
  SqlCommand sql_Command = sql_conn.CreateCommand();

  sql_Command.CommandText = "SELECT top 1 name FROM SysColumns WHERE id=Object_Id('" + table_name + "')";
  string primarykey = sql_Command.ExecuteScalar().ToString(); //获取表的主键名

  string selectkey_str = "select " + primarykey + " from " + table_name;
  sql_Command.CommandText = selectkey_str;
  SqlDataReader result = sql_Command.ExecuteReader();
  while (result.Read())
  {
  int id = Convert.ToInt32(result.GetValue(0));
  DateTime createdate = RandomDay(start, end); //生成一个随机日期
  string str = "update " + table_name + " set CreateDate='" + createdate+"' where "+primarykey+"="+ id;
  sql_Command.CommandText = str;
  Console.WriteLine(str);
  sql_Command.ExecuteNonQuery();
  }
代码执行到sql_Command.ExecuteNonQuery()出现错误:已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭。

请问是不是sql_command在执行完ExecuteReader()后没有关闭不能再来执行ExecuteNonQuery()?

------解决方案--------------------
不好意思,这个动作是在关闭sqldatareader时关自动关闭sqlconnection,不用另调用数据库连接关闭的方法了,一种简化的方式,不能解决你此处的问题
------解决方案--------------------
参考:
http://zhidao.baidu.com/question/255236540.html