用C#直接写Transaction的有关问题
用C#直接写Transaction的问题
winform + sql2005
用上述事务语句直行循环更新字段
strID在循环里是不同的值(调试的时候可观测到)
但是Commit后发现数据库更新的数据都是最后一个arrayList[i]的值
请问这是怎么回事?
------解决方案--------------------
Update Booktable set ID = '"+ strID +"' Where book_ID = '200'
每次执行都将ID更新为strID,最后当然是最后那个值了啊
------解决方案--------------------
你只更新了book_ID = '200'的ID,看下你where后的条件。。。
------解决方案--------------------
book_ID = '200'
你每次更新的都是这条记录啊。更新完了又更新一次。那肯定是最后一个数据保留了。
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
------解决方案--------------------
Update Booktable set ID = '"+ strID +"' Where book_ID = '200'
每次执行都将ID更新为strID,最后当然是最后那个值了啊
------解决方案--------------------
你只更新了book_ID = '200'的ID,看下你where后的条件。。。
------解决方案--------------------
book_ID = '200'
你每次更新的都是这条记录啊。更新完了又更新一次。那肯定是最后一个数据保留了。