如題﹐小弟下面的一小段程序是對兩個表的更新﹐刪除舊的數據后再插入新的數據用事務操作來保証數據的一致性﹐但執行到 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.
}
}
這也只有循環交數較多的時候才會出現﹐不知是什么原因呢大家幫幫我呀
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.
}
}
解决方案 »
- 节或组名“system.web.extensions”已定义。只能在定义此名称的配置级别更新此名称。
- 【分享】正则匹配原理之——逆序环视深入
- listview绑定的效率问题
- 电了商务平台实现站内搜索的问题
- 奇怪的问起!!!!
- 一夜睡不着,急啊!未能将许可证文件“licenses.licx”转换为二进制资源!Unabled to resolve type 'DevExpress.XtraEdito
- 初学C#问个简单的问题
- 100分求解,怎么在dataset update之前得到dataset.table[0]的准确行数
- datagridview数据了解不能保存
- VS编译发布网站的问题
- JPG图形网络传输如何能够加快速度?
- 关于控件导入后的问题
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html