zoukankan      html  css  js  c++  java
  • SQlServer(2)封装SqlHelper(不包含事务)

    封装类

      public static class SqlHelper
        {
            //从配置文件中获取连接字符串   readonly修饰的变量只能在初始化或构造函数中赋值;其他地方只能读取
            public static string constr = ConfigurationManager.AppSettings["DBConStr"].ToString();
            //private static readonly string constr = "Data Source=DELLYS;Initial Catalog=ceshi;User=sa;PassWord=123";
    
            /// <summary>
            /// 增、删、改的方法[ExecuteNonQuery] 返回所影响的行数,执行其他
            /// </summary>
            /// <param name="sql">Sql命令</param>
            /// <param name="cmdtype">SQL语句(CommandType.Text)或者存储过程(CommandType.StoredProcedure)</param>
            /// <param name="pms"></param>
            /// <returns></returns>
            public static int ExecuteNonQuery(string sql, CommandType cmdtype, params SqlParameter[] pms)
            {
                int i = -1;
                try
                {
                    using (SqlConnection con = new SqlConnection(constr))
                    {
                        using (SqlCommand cmd = new SqlCommand(sql, con))
                        {
                            //存储过程或者Sql语句
                            cmd.CommandType = cmdtype;
                            if (pms != null)
                            {
                                cmd.Parameters.AddRange(pms);
                            }
                            if (con.State != ConnectionState.Open)
                            {
                                con.Open();
                            }
                            i = cmd.ExecuteNonQuery();
                        }
                    }
                }
                catch (Exception)
                {
                    throw;
                }
    
                return i;
            }
    
            /// <summary>
            /// 执行查询、查询多少条数据;返回第一行,第一列方法[ExecuteScalar] 返回-1执行失败 
            /// </summary>
            /// <param name="sql">Sql命令</param>
            /// <param name="cmdtype">SQL语句(CommandType.Text)或者存储过程(CommandType.StoredProcedure)</param>
            /// <param name="pms"></param>
            /// <returns></returns>
            public static object ExecuteScalar(string sql, CommandType cmdtype, params SqlParameter[] pms)
            {
                try
                {
                    SqlConnection con = new SqlConnection(constr);
                    using (SqlCommand cmd = new SqlCommand(sql, con))
                    {
                        //存储过程或者Sql语句
                        cmd.CommandType = cmdtype;
                        if (pms != null)
                        {
                            cmd.Parameters.AddRange(pms);
                        }
                        if (con.State != ConnectionState.Open)
                        {
                            con.Open();
                        }
                        return cmd.ExecuteScalar();
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            }
    
            /// <summary>
            /// 执行查询,返回多行、多列的方法ExecuteReader()
            /// </summary>
            /// <param name="sql">Sql命令</param>
            /// <param name="cmdtype">SQL语句(CommandType.Text)或者存储过程(CommandType.StoredProcedure)</param>
            /// <param name="pms"></param>
            /// <returns></returns>
            public static SqlDataReader ExecuteReader(string sql, CommandType cmdtype, params SqlParameter[] pms)
            {
                SqlConnection con = new SqlConnection(constr);
    
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    cmd.CommandTimeout = 60000000;
                    //存储过程或者Sql语句
                    cmd.CommandType = cmdtype;
                    if (pms != null)
                    {
                        cmd.Parameters.AddRange(pms);
                    }
    
                    try
                    {
                        if (con.State != ConnectionState.Open)
                        {
                            con.Open();
                        }
                        return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
                    }
                    catch
                    {
                        con.Close();
                        con.Dispose();
                        throw;
                    }
                }
            }
    
            /// <summary>
            /// 执行返回多个查询时使用,返回DataTable类型
            /// </summary>
            /// <param name="sql">Sql命令</param>
            /// <param name="cmdtype">SQL语句(CommandType.Text)或者存储过程(CommandType.StoredProcedure)</param>
            /// <param name="pms">参数</param>
            /// <returns></returns>
            public static DataTable ExecuteDataTable(string sql, CommandType cmdtype, params SqlParameter[] pms)
            {
                DataTable dt = new DataTable();
                try
                {
                    //通过adapter读取数据。
                    using (SqlDataAdapter adapter = new SqlDataAdapter(sql, constr))
                    {
                        adapter.SelectCommand.CommandType = cmdtype;
                        if (pms != null)
                        {
                            adapter.SelectCommand.Parameters.AddRange(pms);
                        }
    
                        adapter.Fill(dt);
                        return dt;
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            }
    
            /// <summary>  
            /// 该方法是一个数据集方法在很多地方用得到的   
            /// </summary>  
            /// <param name="sql">第一个参数是传sql语句</param>  
            /// <param name="table">第二个参数是传数据库当中的表名</param>  
            /// <returns></returns>  
            public static DataSet GetDataSet(string sql, CommandType cmdtype, string table)
            {
                try
                {
                    using (SqlDataAdapter adapter = new SqlDataAdapter(sql, constr))
                    {
                        adapter.SelectCommand.CommandType = cmdtype;
                        DataSet ds = new DataSet();
                        adapter.Fill(ds, table);
                        return ds;
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            }
    
            /// <summary>
            /// DataTable批量插入
            /// </summary>
            /// <param name="dt"></param>
            /// <param name="emsg"></param>
            /// <returns></returns>
            public static bool GetInsertByDataTable(DataTable dt, ref string emsg)
            {
                try
                {
                    SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(constr, SqlBulkCopyOptions.UseInternalTransaction);
                    sqlbulkcopy.DestinationTableName = dt.TableName;
                    foreach (DataColumn dc in dt.Columns)
                    {
                        sqlbulkcopy.ColumnMappings.Add(dc.ColumnName, dc.ColumnName);
                    }
                    sqlbulkcopy.WriteToServer(dt);
                    return true;
                }
                catch (Exception ex)
                {
                    emsg = ex.Message;
                    return false;
                }
            }
    
            /// <summary>
            /// 连接数据
            /// </summary>
            /// <param name="constring"></param>
            /// <returns></returns>
            public static bool Open(string constring = null)
            {
                if (constring == null)
                {
                    constring = constr;
                }
                SqlConnection con = new SqlConnection(constring);
                try
                {
                    if (con.State != ConnectionState.Open)
                    {
                        con.Open();
                    }
                    if (con.State == ConnectionState.Open)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                catch
                {
                    con.Close();
                    con.Dispose();
                    return false;
                }
            }
        }
  • 相关阅读:
    C#操作符??和?:
    使用Windows8开发Metro风格应用一
    使用Windows8开发Metro风格应用二
    Win8使用技巧
    详解 xls xlst xml 一
    SqlDataAdapter DataSet DataTable 详解
    DataSet 与 xml
    FileTracker : error FTK1011编译错误
    我的CHROME插件
    Komodo升级错误
  • 原文地址:https://www.cnblogs.com/yuanshuo/p/15191462.html
Copyright © 2011-2022 走看看