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

解决方案 »

  1.   

    Update Booktable set ID = '"+ strID +"' Where book_ID = '200'
    每次执行都将ID更新为strID,最后当然是最后那个值了啊
      

  2.   

    你只更新了book_ID = '200'的ID,看下你where后的条件
      

  3.   


    没明白你的意思
    每个循环里strID都是不同的值啊
    执行的时候为什么都是最后那个值?
    比如i = 0 strID = 10
        i = 1 strID = 20
        i = 2 strID = 30
    为什么执行后,变成所有的都是30呢?strID不是在动态变化嘛
      

  4.   


    跟你说的没关系,where后的条件没错,我就是要更新所有book_ID为200的记录
      

  5.   

    book_ID = '200'
    你每次更新的都是这条记录啊。更新完了又更新一次。那肯定是最后一个数据保留了。
      

  6.   

    int value;
    for (int index = 0; index != 3; ++index) value = index;
    为什么value最后总是2呢?