zoukankan      html  css  js  c++  java
  • DBHelper数据库操作类(二)

    不错文章:http://www.codefans.net/articles/562.shtml

                 http://www.cnblogs.com/gaobing/p/3878342.html

    using System;
    using System.Collections.Generic;
    using System.Data.SqlClient;
    using System.Data;
    using System.Configuration;
    using System.Reflection;
    using System.Collections;
    namespace DataHelp
    {
        #region ADO.NET 访问数据库辅助类 +SqlHelp
        //Author:兵兵 +SqlHelp
        public class SqlHelp
        {
            /// <summary>
            /// DB连接字符串
            /// </summary>
            public static readonly string DB= ConfigurationManager.ConnectionStrings["DB"].ConnectionString;
    
    
            #region ExecuteDataReader +ExecuteDataReader(string cmdText, List<SqlParameter> parameters,string connString)
            /// <summary>
            /// ExecuteDataReader(执行有参存储过程)
            /// </summary>
            /// <param name="cmdText">存储过程名称</param>
            /// <param name="parameters">参数列表</param>
            /// <param name="connString">连接字符串</param>
            /// <returns>SqlDataReader对象</returns>
            public static SqlDataReader ExecuteDataReader(string cmdText, List<SqlParameter> parameters, string connString)
            {
                SqlConnection conn = new SqlConnection(connString);
                SqlCommand cmd = new SqlCommand();
                CommandBuilder(cmdText, cmd, conn, parameters);
                SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                cmd.Parameters.Clear();
                return reader;
    
            }
            #endregion
    
            #region ExecuteDataReader +ExecuteDataReader(string cmdText,string connString)
            /// <summary>
            /// ExecuteDataReader(执行无参存储过程)
            /// </summary>
            /// <param name="cmdText">存储过程</param>
            /// <param name="connString">连接字符串</param>
            /// <returns>SqlDataReader对象</returns>
            public static SqlDataReader ExecuteDataReader(string cmdText, string connString)
            {
    
                SqlConnection conn = new SqlConnection(connString);
                SqlCommand cmd = new SqlCommand();
                CommandBuilder(cmdText, cmd, conn);
                SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                cmd.Parameters.Clear();
                return reader;
    
            }
            #endregion
    
            #region ExecuteNonQuery +ExecuteNonQuery(string cmdText, List<SqlParameter> parameters, string connString)
            /// <summary>
            /// ExecuteNonQuery(执行有参存储过程)
            /// </summary>
            /// <param name="cmdText">存储过程名称</param>
            /// <param name="parameters">参数列表</param>
            /// <param name="connString">连接字符串</param>
            /// <returns>数据库受影响的行数</returns>
            public static int ExecuteNonQuery(string cmdText, List<SqlParameter> parameters, string connString)
            {
                using (SqlConnection conn = new SqlConnection(connString))
                {
                    SqlCommand cmd = new SqlCommand();
                    CommandBuilder(cmdText, cmd, conn, parameters);
                    int result = cmd.ExecuteNonQuery();
                    cmd.Parameters.Clear();
                    return result;
                }
            }
            #endregion
    
            #region ExecuteNonQuery +ExecuteNonQuery(string cmdText, string connString)
            /// <summary>
            /// ExecuteNonQuery(执行无参存储过程)
            /// </summary>
            /// <param name="cmdText">存储过程名称</param>
            /// <param name="connString">连接字符串</param>
            /// <returns>数据库受影响的行数</returns>
            public static int ExecuteNonQuery(string cmdText, string connString)
            {
    
                using (SqlConnection conn = new SqlConnection(connString))
                {
                    SqlCommand cmd = new SqlCommand();
                    CommandBuilder(cmdText, cmd, conn);
                    int result = cmd.ExecuteNonQuery();
                    cmd.Parameters.Clear();
                    return result;
                }
    
    
            }
            #endregion
    
            #region ExecuteScalar +ExecuteScalar(string cmdText, List<SqlParameter> parameters, string connString)
            /// <summary>
            /// ExecuteScalar(执行有参存储过程)
            /// </summary>
            /// <param name="cmdText">存储过程名称</param>
            /// <param name="parameters">参数列表</param>
            /// <param name="connString">连接字符串</param>
            /// <returns>object</returns>
            public static object ExecuteScalar(string cmdText, List<SqlParameter> parameters, string connString)
            {
    
                using (SqlConnection conn = new SqlConnection(connString))
                {
                    SqlCommand cmd = new SqlCommand();
                    CommandBuilder(cmdText, cmd, conn, parameters);
                    object o = cmd.ExecuteScalar();
                    cmd.Parameters.Clear();
                    return o;
                }
    
    
            }
            #endregion
    
            #region ExecuteScalar +ExecuteScalar(string cmdText, string connString)
            /// <summary>
            /// ExecuteScalar(执行无参存储过程)
            /// </summary>
            /// <param name="cmdText">存储过程名称</param>
            /// <param name="connString">连接字符串</param>
            /// <returns>object</returns>
            public static object ExecuteScalar(string cmdText, string connString)
            {
    
                using (SqlConnection conn = new SqlConnection(connString))
                {
                    SqlCommand cmd = new SqlCommand();
                    CommandBuilder(cmdText, cmd, conn);
                    object o = cmd.ExecuteScalar();
                    cmd.Parameters.Clear();
                    return o;
                }
    
    
            }
            #endregion
    
            #region ExecuteDataTable +ExecuteDataTable(string cmdText, List<SqlParameter> parameters, string connString)
            /// <summary>
            /// ExecuteDataTable(用适配器执行有参存储过程)
            /// </summary>
            /// <param name="cmdText">存储过程名称</param>
            /// <param name="parameters">参数列表</param>
            /// <param name="connString">连接字符串</param>
            /// <returns>DataTable</returns>
            public static DataTable ExecuteDataTable(string cmdText, List<SqlParameter> parameters, string connString)
            {
    
                using (SqlConnection conn = new SqlConnection(connString))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cmdText, conn);
                    //命令类型为存储过程
                    da.DeleteCommand.CommandType = CommandType.StoredProcedure;
                    da.SelectCommand.Parameters.AddRange(parameters.ToArray());
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    return dt;
                }
    
    
            }
            #endregion
    
            #region ExecuteDataTable +ExecuteDataTable(string cmdText, string connString)
            /// <summary>
            /// ExecuteDataTable(用适配器执行无参存储过程)
            /// </summary>
            /// <param name="cmdText">存储过程名称</param>
            /// <param name="connString">连接字符串</param>
            /// <returns>DataTable</returns>
            public static DataTable ExecuteDataTable(string cmdText, string connString)
            {
    
                using (SqlConnection conn = new SqlConnection(connString))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cmdText, conn);
                    //命令类型为存储过程
                    da.DeleteCommand.CommandType = CommandType.StoredProcedure;
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    return dt;
                }
            }
            #endregion
    
            #region ExecuteDataTableProc(命令+适配器) +ExecuteDataTableProc(string cmdText, List<SqlParameter> parameters, string connString)
            /// <summary>
            /// ExecuteDataTableProc(执行有参存储过程)
            /// </summary>
            /// <param name="cmdText">存储过程名称</param>
            /// <param name="parameters">参数列表</param>
            /// <param name="connString">连接字符串</param>
            /// <returns>DataTable</returns>
            public static DataTable ExecuteDataTableProc(string cmdText, List<SqlParameter> parameters, string connString)
            /// <summary>
            {
    
                using (SqlConnection conn = new SqlConnection(connString))
                {
                    SqlCommand cmd = new SqlCommand();
                    CommandBuilder(cmdText, cmd, conn, parameters);
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    DataTable dt = new DataTable();
                    adapter.Fill(dt);
                    cmd.Parameters.Clear();
                    return dt;
    
                }
    
            }
            #endregion
    
            #region ExecuteDataTableProc(命令+适配器) +ExecuteDataTableProc(string cmdText, string connString)
            /// <summary>
            /// ExecuteDataTableProc(执行无参存储过程)
            /// </summary>
            /// <param name="parameters">参数列表</param>
            /// <param name="connString">连接字符串</param>
            /// <returns>DataTable</returns>
            public static DataTable ExecuteDataTableProc(string cmdText, string connString)
            {
    
                using (SqlConnection conn = new SqlConnection(connString))
                {
                    SqlCommand cmd = new SqlCommand();
                    CommandBuilder(cmdText, cmd, conn);
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    DataTable dt = new DataTable();
                    adapter.Fill(dt);
                    cmd.Parameters.Clear();
                    return dt;
    
                }
    
            }
            #endregion
    
            #region 准备命令对象 -CommandBuilder(string cmdText, SqlCommand cmd, SqlConnection conn, List<SqlParameter> parameters)
            /// <summary>
            /// 准备命令对象(执行有参存储过程)
            /// </summary>
            /// <param name="cmdText">存储过程名称</param>
            /// <param name="cmd">命令对象</param>
            /// <param name="conn">连接对象</param>
            /// <param name="parameters">参数列表</param>
            private static void CommandBuilder(string cmdText, SqlCommand cmd, SqlConnection conn, List<SqlParameter> parameters)
            {
    
                if (conn.State == System.Data.ConnectionState.Closed)
                    conn.Open();
                cmd.Connection = conn;
                cmd.CommandText = cmdText;
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                if (parameters.Count > 0)
                    cmd.Parameters.AddRange(parameters.ToArray());
    
            }
            #endregion
    
            #region 准备命令对象 -CommandBuilder(string cmdText, SqlCommand cmd, SqlConnection conn)
            /// <summary>
            /// 准备命令对象(执行无参存储过程)
            /// </summary>
            /// <param name="cmdText">存储过程名称</param>
            /// <param name="cmd">命令对象</param>
            /// <param name="conn">连接对象</param>
            private static void CommandBuilder(string cmdText, SqlCommand cmd, SqlConnection conn)
            {
    
                if (conn.State == System.Data.ConnectionState.Closed)
                    conn.Open();
                cmd.Connection = conn;
                cmd.CommandText = cmdText;
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
    
            }
            #endregion
    
            #region 批插入 void BulkInsert( DataTable dt, string tableName, string connStr)
            /// <summary>
            /// 批插入 void BulkInsert( DataTable dt, string tableName, string connStr)
            /// </summary>
            /// <param name="dt">所有数据的表格</param>
            /// <param name="tableName">表名</param>
            public static int BulkInsert(DataTable dt, string tableName, string connStr)
            {
                int result = -1;
                if (string.IsNullOrEmpty(tableName))
                    throw new Exception("请指定你要插入的表名");
                var count = dt.Rows.Count;
                if (count == 0)
                    return result;
                SqlTransaction sqlBulkTran = null;
                try
                {
                    using (SqlConnection conn = new SqlConnection(connStr))
                    {
                        if (conn.State == System.Data.ConnectionState.Closed)
                            conn.Open();
                        sqlBulkTran = conn.BeginTransaction();
                        using (SqlBulkCopy copy = new SqlBulkCopy(conn, SqlBulkCopyOptions.CheckConstraints, sqlBulkTran))
                        {
                            copy.DestinationTableName = tableName;//指定目标表
                            copy.WriteToServer(dt);//将dt中的所有行复制到SqlBulkCopy对象的DestinationTableName指定的目标表中
                            if (sqlBulkTran != null)
                            {
                                sqlBulkTran.Commit();
                            }
                            result = 1;
                        }
    
                    }
    
                }
                catch (Exception)
                {
                    if (sqlBulkTran != null)
                    {
                        sqlBulkTran.Rollback();
                    }
                }
                finally
                {
                    sqlBulkTran = null;
                }
    
                return result;
            }
            #endregion
    
             
        }
        #endregion
    }
    #region list 扩展方法 Author:高兵兵
    public static class IListUtil
    {
        /// <summary>
        /// 将集合类转换成DataTable 
        /// </summary>
        /// <param name="list">集合</param>
        /// <returns></returns>
        public static DataTable AsDataTable<T>(this IList<T> list)
        {
            DataTable result = new DataTable();
            if (list.Count > 0)
            {
                PropertyInfo[] propertys = typeof(T).GetProperties();
                foreach (PropertyInfo pi in propertys)
                {
                    result.Columns.Add(pi.Name, pi.PropertyType);
                }
    
                for (int i = 0; i < list.Count; i++)
                {
                    ArrayList tempList = new ArrayList();
                    foreach (var item in propertys)
                    {
                        object obj = item.GetValue(list[i], null);
                        tempList.Add(obj);
                    }
    
                    object[] array = tempList.ToArray();
                    result.LoadDataRow(array, true);
                }
            }
            return result;
        }
    
    
    }
    #endregion
  • 相关阅读:
    洛谷 P3040 [USACO12JAN]贝尔分享Bale Share
    洛谷 P1994 有机物燃烧
    洛谷 P3692 [PUB1]夏幻的考试
    洛谷 P2117 小Z的矩阵
    洛谷 P1154 奶牛分厩
    洛谷 P1718 图形复原
    洛谷 P1900 自我数
    洛谷 P1964 【mc生存】卖东西
    洛谷 P1123 取数游戏
    hdu_2844_Coins(多重背包)
  • 原文地址:https://www.cnblogs.com/51net/p/3999846.html
Copyright © 2011-2022 走看看