• 改进的sqlhelper学习日志


    下面就是详细的sqlhelper的代码了

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Data;
    
    
    
    namespace hr_DAL
    {
        public class SqlHelper
        {
            //连接对象和命令对象
            private static SqlConnection conn;
            private static SqlCommand cmd;
            private static string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
            /// <summary>
            /// 构造函数,实例化一个空的SqlHelper对象
            /// </summary>
            public SqlHelper()
            { 
            }
            #region 共有方法
            /// <summary>
            ///方法:实例化连接对象
            /// </summary>
            private static void con()
            {
                conn = new SqlConnection(constr);
            }
            /// <summary>
            /// 方法:打开连接,实例化命令对象
            /// </summary>
            /// <param name="sql"></param>
            /// <returns></returns>
            private static SqlCommand ExtCommand(string sql)
            {
                con();
                //创建一个connection对象打开时,
                //就会创建一个连接池,连接池和连接字符串完全匹配.
                //如果一个连接对象的连接字符串和连接池完全匹配,就会把该连接对象放到匹配的池中,
                //如果不完全匹配,则再创建一个连接池
                conn.Open();
                
                cmd = conn.CreateCommand();//将连接给命令对象
                cmd.CommandText = sql;
                return cmd;
     
            }
            /// <summary>
            /// 方法:关闭连接,释放资源
            /// </summary>
            private static void CloseConn()
            {
                if(conn!=null)//连接池是否为null,是否占用连接
                {
                    if (conn.State == ConnectionState.Open)
                    {
                        conn.Close();//关闭了连接,
                        cmd.Dispose();//清空了连接字符串,即连接池
                        conn.Dispose();
                    }
                }
    
    
            }
            #endregion
            /// <summary>
            /// 方法:得到执行结果的首行首列
            /// </summary>
            /// <param name="sql"></param>
            /// <returns></returns>
            public static string GetOne(string sql)
            {
                ExtCommand(sql);
               string result= (string) cmd.ExecuteScalar();
               CloseConn();
               return result;
            }
    
            /// <summary>
            /// 方法:用SqlDataAdapter得到一个表
            /// </summary>
            /// <param name="sql"></param>
            /// <returns></returns>
            public static DataTable GetTable(string sql)
            {
                ExtCommand(sql);
                SqlDataAdapter sda = new SqlDataAdapter();
                //将cmd命令对象交给适配器对象
                sda.SelectCommand = ExtCommand(sql);
                DataSet ds = new DataSet();
                sda.Fill(ds,"table");
                CloseConn();
                return ds.Tables["table"];
    
    
                #region SqlDataAdapter的使用方法
                //SqlConnection conn = new SqlConnection(constr);
                //SqlCommand cmd = new SqlCommand("select * from product", conn);
    
                //SqlDataAdapter sdat = new SqlDataAdapter(cmd);
                //DataSet ds = new DataSet();
    
                //sdat.Fill(ds, "p");
                //dataGridView1.DataSource = ds.Tables["p"];
                #endregion
    
            }/// <summary>
            /// 方法:根据条件返回一个数据流
            /// </summary>
            /// <param name="sql"></param>
            /// <returns></returns>
            public static SqlDataReader GetReader(string sql)
            {
                ExtCommand(sql);
                //CommandBehavior.CloseConnection表示数据流关闭,连接也关闭
                SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                return sdr;
    
            }
        }
    }
  • 相关阅读:
    使用Python操作InfluxDB时序数据库
    LogMysqlApeT
    内建函数 iter()
    Python魔法方法总结及注意事项
    Python魔法方法之属性访问 ( __getattr__, __getattribute__, __setattr__, __delattr__ )
    Python描述符 (descriptor) 详解
    在命令行模式下查看Python帮助文档---dir、help、__doc__
    python高并发的解决方案
    map中的erase成员函数用法
    指针的本质
  • 原文地址:https://www.cnblogs.com/hongmaju/p/3606274.html
Copyright © 2020-2023  润新知