如題﹐小弟下面的一小段程序是對兩個表的更新﹐刪除舊的數據后再插入新的數據用事務操作來保証數據的一致性﹐但執行到 for 循環的時候卻出現了異常﹐異常信息如下﹕
這也只有循環交數較多的時候才會出現﹐不知是什么原因呢大家幫幫我呀
            DataTable tb = (DataTable)dataGridView1.DataSource;            string table_name = dataGridView1.Rows[0].Cells[0].Value.ToString().Trim();
            string table_label = qdtxt_tbLable.Text.Trim();
          
            string sql1 = "DELETE FROM tb_base_table_info " 
                        + "WHERE table_name = '" + table_name + "'";
            string sql2 = "INSERT INTO tb_base_table_info(table_name, table_lable) " 
                        + "VALUES('" + table_name + "', '" + table_label + "')";
            string sql3 = "DELETE FROM tb_base_table_dtl "
                        + "WHERE table_name = '" + table_name + "'";            OleDbTransaction tran = null;
            OleDbCommand cmd1 = new OleDbCommand(sql1, conn, tran);
            OleDbCommand cmd2 = new OleDbCommand(sql2, conn, tran);
            OleDbCommand cmd3 = new OleDbCommand(sql3, conn, tran);            try
            {
                conn.Open();
                tran = conn.BeginTransaction();                cmd1.ExecuteNonQuery();
                cmd2.ExecuteNonQuery();
                cmd3.ExecuteNonQuery();                for (int i = 0; i < tb.Rows.Count; i++)
                {
                    if (tb.Rows[i][2].ToString().Trim() == "")
                        continue;                    string column_name = tb.Rows[i][1].ToString().Trim();
                    string column_lable = tb.Rows[i][2].ToString().Trim();
                    string order_ = tb.Rows[i][3].ToString().Trim();                    string sql4 = "INSERT INTO tb_base_table_dtl(table_name, column_name, column_lable, order_) "
                                + "VALUES('" + table_name + "', " 
                                + "       '" + column_name + "', " 
                                + "       '" + column_name + "', "
                                +                     order_ + ")";
                    OleDbCommand cmd4 = new OleDbCommand(sql4, conn, tran);
                    cmd4.ExecuteNonQuery();                }
                tran.Commit();
                conn.Close();
                MessageBox.Show("Updated!",
                                "Tips",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
            }
            catch(Exception ex)
            {
                try
                {
                    tran.Rollback();
                    conn.Close();
                    MessageBox.Show("Updated failed!\n" + ex.Message,
                                    "Tips",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Warning);
                }
                catch
                { 
                    // do nothing here.
                }
            }

解决方案 »

  1.   

    看看你的sql应该是值超过字段长度
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  2.   

        不是這個原因噢﹐sql4 里的那几個參數(table_name, column_name, column_lable)都是一兩個單詞的長度而已呀﹐以前也遇到這樣的問題﹐在同一個連接上執行多次的 SQL 命令就會出現這樣的問題了﹐煩呀。