winform + sql2005 //以下是事务设置
SqlConnection Conn = dba.GetConn();
Conn.Open();
SqlTransaction sqlTrans = Conn.BeginTransaction();
SqlCommand sqlComm = Conn.CreateCommand();
sqlComm.Connection = Conn;
sqlComm.Transaction = sqlTrans;
try
{
for (int i = 0; i <arrayList.Count; i++)
{
string strID = arrayList[i].ToString(); sqlComm.CommandText = "Update Booktable set ID = '"+ strID +"' Where book_ID = '200'";
sqlComm.ExecuteNonQuery();
} sqlTrans.Commit();
}
用上述事务语句直行循环更新字段
strID在循环里是不同的值(调试的时候可观测到)
但是Commit后发现数据库更新的数据都是最后一个arrayList[i]的值请问这是怎么回事?
c#数据库sql
SqlConnection Conn = dba.GetConn();
Conn.Open();
SqlTransaction sqlTrans = Conn.BeginTransaction();
SqlCommand sqlComm = Conn.CreateCommand();
sqlComm.Connection = Conn;
sqlComm.Transaction = sqlTrans;
try
{
for (int i = 0; i <arrayList.Count; i++)
{
string strID = arrayList[i].ToString(); sqlComm.CommandText = "Update Booktable set ID = '"+ strID +"' Where book_ID = '200'";
sqlComm.ExecuteNonQuery();
} sqlTrans.Commit();
}
用上述事务语句直行循环更新字段
strID在循环里是不同的值(调试的时候可观测到)
但是Commit后发现数据库更新的数据都是最后一个arrayList[i]的值请问这是怎么回事?
c#数据库sql
每次执行都将ID更新为strID,最后当然是最后那个值了啊
没明白你的意思
每个循环里strID都是不同的值啊
执行的时候为什么都是最后那个值?
比如i = 0 strID = 10
i = 1 strID = 20
i = 2 strID = 30
为什么执行后,变成所有的都是30呢?strID不是在动态变化嘛
跟你说的没关系,where后的条件没错,我就是要更新所有book_ID为200的记录
你每次更新的都是这条记录啊。更新完了又更新一次。那肯定是最后一个数据保留了。
for (int index = 0; index != 3; ++index) value = index;
为什么value最后总是2呢?