日期:2014-05-18  浏览次数:20797 次

C# SQL事务处理时整个表被占用,求解决方法!
c# winform程序在进行SQL事务处理过程时,整个表被占用,其它程序进程访问时被挂起,求解决方法?
C# code
 private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection("server= .\\SQLEXPRESS;uid=testuser1;pwd=test123;database=manage");
            conn.Open();
            SqlCommand cmd = new SqlCommand();

           SqlTransaction sqltran = conn.BeginTransaction();
           cmd.Connection = conn;
           cmd.Transaction = sqltran;

            try
            {
                for (int i = 0; i < 99999; i++)
                {
                    cmd.CommandText ="UPDATE [newplan] SET [dept] = '" + i + "' WHERE [number]='11'";
                    cmd.ExecuteNonQuery();
                    txt_number.Text = i.ToString();

                }
                 sqltran.Commit();

            }
            catch
            {
               sqltran.Rollback();
            }
            finally
            {
                conn.Close();
            }


------解决方案--------------------
用更新的ID和新值,创建临时表

启动事务,创建内联接更新,执行,提交.
------解决方案--------------------
重复10万次同一个数据库操作有意义么?你是故意想让CPU烧掉、故意想让机器死机?
------解决方案--------------------
看完了一身冷汗,还能这样用

还有很多东西要学啊

前几天我一直把那个 Transaction 写在存储过程里