• c#简单的SQLHelp


    public abstract class SQLHelper
    {
    //只读的静态数据库连接字符串
    //需添加引用System.Configuration;
    public static readonly string connString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

    //public static readonly string connString = "server=.;database=Weight;uid=sa;pwd=1";

    #region 执行 增 删 改
    /// <summary>
    /// 执行 增 删 改
    /// </summary>
    /// <param name="sql">要执行的SQL</param>
    /// <param name="param">参数</param>
    /// <returns>影响行数</returns>
    public static int ExecuteNonQuery(string sql, params SqlParameter[] param)
    {
    //实例化连接对象,并指定连接字符串,自动释放资源,不用关闭
    using (SqlConnection conn = new SqlConnection(connString))
    {
    //实例化命令对象,指定sql,与连接对象
    using (SqlCommand cmd = new SqlCommand(sql, conn))
    {
    //如果有参数
    if (param != null)
    {
    //批量添加参数
    cmd.Parameters.AddRange(param);
    }
    //打开连接
    conn.Open();
    //执行sql并返回影响行数
    return cmd.ExecuteNonQuery();
    }
    }
    }

    /// <summary>
    /// 返回首行首列对象
    /// </summary>
    /// <param name="sql">要执行的SQL</param>
    /// <param name="param">参数</param>
    /// <returns>首行首列对象</returns>
    public static object ExecuteScalar(string sql, params SqlParameter[] param)
    {
    //实例化连接对象,并指定连接字符串,自动释放资源,不用关闭
    using (SqlConnection conn = new SqlConnection(connString))
    {
    //实例化命令对象,指定sql,与连接对象
    using (SqlCommand cmd = new SqlCommand(sql, conn))
    {
    //如果有参数
    if (param != null)
    {
    //批量添加参数
    cmd.Parameters.AddRange(param);
    }
    //打开连接
    conn.Open();
    //执行sql并返回影响行数
    return cmd.ExecuteScalar();
    }
    }
    }
    #endregion

    #region 执行 查询
    /// <summary>
    /// 执行 查询
    /// </summary>
    /// <param name="sql">要执行的SQL</param>
    /// <param name="param">参数</param>
    /// <returns>数据集</returns>
    public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] param)
    {
    //实例化连接对象,并指定连接字符串
    SqlConnection conn = new SqlConnection(connString);
    //实例化命令对象,指定sql,与连接对象
    using (SqlCommand cmd = new SqlCommand(sql, conn))
    {
    //如果有参数
    if (param != null)
    {
    //批量添加参数
    cmd.Parameters.AddRange(param);
    }
    //打开连接
    conn.Open();
    //执行sql并返回一个只进只读保持SQL连接的结果集,如果将返回的SqlDataReader关闭时也将关闭连接
    return cmd.ExecuteReader(CommandBehavior.CloseConnection);
    }
    }
    #endregion

    #region 完成数据的查询,返回DataTable
    /// <summary>
    /// 完成数据的查询,返回DataTable
    /// </summary>
    /// <param name="sql">要执行的sql</param>
    /// <param name="param">参数</param>
    /// <returns>DataTable</returns>
    public static DataTable GetTable(string sql, params SqlParameter[] param)
    {
    //实例化连接对象,并指定连接字符串,自动释放资源,不用关闭
    using (SqlConnection conn = new SqlConnection(connString))
    {
    //数据适配器
    SqlDataAdapter adp = new SqlDataAdapter(sql, conn);
    if (param != null)
    {
    //批量添加参数
    adp.SelectCommand.Parameters.AddRange(param);
    }
    //填充并返回数据表
    DataTable dt = new DataTable();
    adp.Fill(dt);
    return dt;
    }
    }
    #endregion

    #region 根据sql获得List集合
    /// <summary>
    /// 根据sql获得List集合
    /// </summary>
    public static List<T> GetList<T>(String sql, params SqlParameter[] param)
    where T : class,new()
    {
    List<T> entities = new List<T>();

    using (SqlDataReader sdr = SQLHelper.ExecuteReader(sql))
    {
    while (sdr.Read())
    {
    T entity = new T();
    //获得当前实体类型信息
    Type type = typeof(T);
    //遍历结果集中的每一列
    for (int i = 0; i < sdr.FieldCount; i++)
    {
    //获得列名
    String columnName = sdr.GetName(i);
    //根据列名取得属性信息
    PropertyInfo property = type.GetProperty(columnName);
    //如果当前列的值为null则跳过
    if (!(sdr.GetValue(i) is DBNull))
    {
    //给属性赋值
    property.SetValue(entity, sdr.GetValue(i), null);
    }
    }
    entities.Add(entity);
    }
    }

    return entities;
    }
    #endregion
    }

  • 相关阅读:
    强制转换改变了对象的框架大小
    android应用程序fps meter[帧数显示]的分析 —— 浅谈root的风险 (1)
    父类virtual和overload,子类reintroduce; overload;
    MySQL版本与工具
    Verilog HDL实用教程笔记
    XE2安装JVCL
    解决Raize日历控件显示的问题
    hdu3415 Max Sum of Max-K-sub-sequence
    MFC重绘原理的关键理解
    常用代码页与BOM
  • 原文地址:https://www.cnblogs.com/dinggf/p/11774917.html
Copyright © 2020-2023  润新知