Bootstrap

C# 多线程异步操作sql方法,DBHepler类

        /// <summary>
        ///  执行查询并返回 DataTable
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="connectionString">链接字符串</param>
        /// <param name="parameters">参数</param>
        /// <returns></returns>
        public static async Task<DataTable> ExecuteQueryAsync(string sql,string connectionString, SqlParameter[] parameters = null)
        {
            DataTable dataTable = new DataTable();

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                await connection.OpenAsync();

                using (SqlCommand command = new SqlCommand(sql, connection))
                {
                    if (parameters != null)
                    {
                        command.Parameters.AddRange(parameters);
                    }

                    using (SqlDataReader reader = await command.ExecuteReaderAsync())
                    {
                        dataTable.Load(reader);
                    }
                }
            }

            return dataTable;
        }

        /// <summary>
        /// INSERT、UPDATE、DELETE,并返回受影响的行数。
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="connectionString">链接字符串</param>
        /// <param name="parameters">参数</param>
        /// <returns></returns>
        public static async Task<int> ExecuteNonQueryAsync(string sql, string connectionString, SqlParameter[] parameters = null)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                await connection.OpenAsync();

                using (SqlCommand command = new SqlCommand(sql, connection))
                {
                    if (parameters != null)
                    {
                        command.Parameters.AddRange(parameters);
                    }

                    return await command.ExecuteNonQueryAsync();
                }
            }
        }

   /// <summary>
        /// 执行查询并返回单个值[第一行、第一列]
        /// </summary>
       /// <param name="sql">sql语句</param>
       /// <param name="connectionString">链接字符串</param>
       /// <param name="parameters">参数</param>
        /// <returns></returns>
        public static async Task<object> ExecuteScalarAsync(string sql, string connectionString, SqlParameter[] parameters = null)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                await connection.OpenAsync();

                using (SqlCommand command = new SqlCommand(sql, connection))
                {
                    if (parameters != null)
                    {
                        command.Parameters.AddRange(parameters);
                    }

                    return await command.ExecuteScalarAsync();
                }
            }
        }

        /// <summary>
        /// 执行存储过程并返回 DataTable
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="connectionString">链接字符串</param>
        /// <param name="parameters">参数</param>
        /// <returns></returns>
        public static async Task<DataTable> ExecuteStoredProcedureAsync(string sql, string connectionString, SqlParameter[] parameters = null)
        {
            DataTable dataTable = new DataTable();

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                await connection.OpenAsync();

                using (SqlCommand command = new SqlCommand(sql, connection))
                {
                    command.CommandType = CommandType.StoredProcedure;

                    if (parameters != null)
                    {
                        command.Parameters.AddRange(parameters);
                    }

                    using (SqlDataReader reader = await command.ExecuteReaderAsync())
                    {
                        dataTable.Load(reader);
                    }
                }
            }

            return dataTable;
        }

;