while (reader.Read())
{
//
MessageBox.Show(Convert.ToString(reader["id"])); string citystr, sc, ec, dates;
citystr = Convert.ToString(reader["city"]);
dates = Convert.ToString(reader["dates"]);
dates = dates.Trim();
sc = citystr.Substring(0, 3);
ec = citystr.Substring(3, 3);
int did;
did = Convert.ToInt32(reader["id"]);
//MessageBox.Show("qqqq"+reader["city"]);
SqlCommand command = objConnection.CreateCommand(); command.CommandText = "update newft set tip=tip+1 where id=" + did + "";
command.ExecuteNonQuery();
}
reader.Close();
上面的代码.只要 SqlCommand command = objConnection.CreateCommand(); command.CommandText = "update newft set tip=tip+1 where id=" + did + "";
command.ExecuteNonQuery();
这三句加上就会出错.提示 已有打开的与此命令相关联的 DataReader,必须首先将它关闭我要实现的是读完一条数据马上更新他的tip值,有的说是要关闭DataReader.在我的代码要怎么样关闭??.请教各位!!!
SqlCommand command = objConnection.CreateCommand();
command.CommandText = "update newft set tip=tip+1 where id=" + did + "";
command.ExecuteNonQuery();
command.Close();这样吗
SqlCommand command = objConnection.CreateCommand();
改成
SqlCommand command = objConnection2.CreateCommand();
再创建一个连接就可以了.
--------------------------------------------------------------------------------谢谢 possible_Y ,不太明白.能举例讲一下吗?
UPDATE Table1 SET Sex = 'M' FROM (SELECT Table1 WHERE Age > 30)
这样只需要和数据库建立一次连接, 剩下工作都是数据库里执行了如果按你的做法, 先捞出数据库Table1里的所有age大于30的人, 获取数据到应用程序这边, 然后循环, 每次又连接数据库执行Update, 这样的效率不算低么?
楼上的方法是正确的,使用sql来解决