C# 异步执行SQL语句

异步执行SQL语句,试下就明白,无需解释

/// <summary>
        /// 按钮事件 异步执行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Click(object sender, EventArgs e)
        {
            string strSql = "SELECT c1 ,c2 FROM  T1;" +
                            "WAITFOR DELAY '0:0:3';";
            AsyncExecuteNonQuery(strSql, CallbackAsyncExecuteNonQuery);
        }
 
       /// <summary>
        /// 异步执行SQL。 
        /// </summary>
        /// <param name="sqlText">要执行的SQLTextwww.it165.net</param>
        /// <param name="callBack">回执行监控事件</param>
        public static void AsyncExecuteNonQuery(string sqlText, AsyncCallback callBack)
        {
            //关闭数据库连接要在callback中关闭,因为是异步操作
            SqlConnection connection = null;
            try
            {
                connection = new SqlConnection();
                connection.ConnectionString = "Data Source=192.168.1.15;Initial Catalog=TestDB;user id=sa;password=123;Max Pool Size=200;Min Pool Size=5;Pooling=true;Connection Timeout=50;Asynchronous Processing=true";
                SqlCommand cmd = connection.CreateCommand();
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = sqlText;
                connection.Open();
                cmd.BeginExecuteNonQuery(callBack, cmd); //开始执行SQL语句
            }
            catch (Exception ex)
            {
                if (connection != null)
                {
                    connection.Close();
                }
            }
        }
        /// <summary>
        ///  执行异步SQL 回调方法 
        /// </summary>
        /// <param name="callBack"></param>
        public static void CallbackAsyncExecuteNonQuery(IAsyncResult callBack)
        {
            SqlCommand cmm = null;
            try
            {
                cmm = (SqlCommand)callBack.AsyncState;
                if (cmm == null)
                {
                    return;
                }
                cmm.EndExecuteNonQuery(callBack); //执行完毕
            }
            catch (Exception ex)
            {
                if (cmm != null)
                {
                    //异步执行SQL异常
                    cmm.Dispose();
                }
                else
                {
                    //异步执行SQL异常
                }
            }
            finally
            {
                if (cmm != null && cmm.Connection != null && cmm.Connection.State != ConnectionState.Closed)
                {
                    cmm.Dispose();
                    cmm.Connection.Close();
                }
            }
        }


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值