Ado.net 通用访问类

public class DbHelperSQL
    {
        private static string connString = ConfigurationManager.ConnectionStrings["SqlDataSource"].ToString();

        #region 获取一个连接通道
        /// <summary>
        /// 获取一个连接通道
        /// </summary>
        /// <returns></returns>
        public static SqlConnection CreateConn()
        {
            return new SqlConnection(connString);
        }
        #endregion

        #region 获取数据源
        /// <summary>
        /// 获取数据源
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="parms"></param>
        /// <returns></returns>
        public static DataSet Query(string sql, CommandType cmdType = CommandType.Text, params SqlParameter[] parms)
        {
            DataSet dt = new DataSet();
            using (SqlConnection conn = CreateConn())
            {
                SqlDataAdapter da = new SqlDataAdapter();
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.CommandType = cmdType;
                if (parms != null)
                {
                    cmd.Parameters.AddRange(parms);
                }
                da.SelectCommand = cmd;
                da.Fill(dt);
            }

            return dt;
        }
        #endregion

        #region 执行事务
        /// <summary>
        /// 执行事务
        /// </summary>
        /// <param name="sql">存储过程名</param>
        /// <param name="parmsList">每个存储过程中所包含的参数</param>
        /// <returns></returns>
        public static int ExecTran(string sql,  List<SqlParameter[]> parmsList,CommandType cmdType = CommandType.Text)
        {
            int row = 0;
            using (SqlConnection conn = CreateConn())
            {
                conn.Open();
                SqlTransaction tran = conn.BeginTransaction();
                SqlCommand cmd = new SqlCommand(sql, conn, tran);
                cmd.CommandType = cmdType;
                if (parmsList != null && parmsList.Count>0)
                {
                    foreach (SqlParameter[] parms in parmsList)
                    {
                        cmd.Parameters.Clear();
                        if (parms != null)
                        {
                            cmd.Parameters.AddRange(parms);
                        }
                        try
                        {
                            row += cmd.ExecuteNonQuery();
                        }
                        catch
                        {
                            tran.Rollback();
                            return 0;
                        }
                    }
                    tran.Commit();
                }
            }
            return row;
        }
        #endregion

        #region 执行包含主表和子表的事务
        /// <summary>
        /// 执行包含主表和子表的事务
        /// </summary>
        /// <param name="MainSql">主表存储过程</param>
        /// <param name="MainParmsList">主表存储过程包含的参数</param>
        /// <param name="ChildSql">子表存储过程</param>
        /// <param name="ChildParmsList"></param>
        /// <returns></returns>
        public int ExecTran(string MainSql, CommandType cmdType, List<SqlParameter[]> MainParmsList, string ChildSql, List<SqlParameter[]> ChildParmsList)
        {
            int row = 0;
            using (SqlConnection conn = CreateConn())
            {
                conn.Open();
                SqlTransaction tran = conn.BeginTransaction();
                SqlCommand cmd = new SqlCommand(MainSql, conn, tran);
                cmd.CommandType = cmdType;
                if (MainParmsList != null)
                {
                    foreach (SqlParameter[] parms in MainParmsList)
                    {
                        cmd.Parameters.Clear();
                        if (parms != null)
                        {
                            cmd.Parameters.AddRange(parms);
                        }
                        try
                        {
                            row = cmd.ExecuteNonQuery();
                        }
                        catch
                        {
                            tran.Rollback();
                            return 0;
                        }
                    }
                }
                cmd.CommandText = ChildSql;
                if (ChildParmsList != null)
                {
                    foreach (SqlParameter[] parm in ChildParmsList)
                    {
                        cmd.Parameters.Clear();
                        if (parm != null)
                        {
                            cmd.Parameters.AddRange(parm);
                        }
                        try
                        {
                            row = cmd.ExecuteNonQuery();
                        }
                        catch
                        {
                            tran.Rollback();
                            return 0;
                        }
                    }
                    tran.Commit();
                }
            }
            return row;
        }
        #endregion

        #region 执行Sql语句
        /// <summary>
        /// 执行Sql语句
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="parms"></param>
        /// <returns></returns>
        public static int ExecuteSql(string sql, CommandType cmdType = CommandType.Text, params SqlParameter[] parms)
        {
            int row = 0;
            using (SqlConnection conn = CreateConn())
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.CommandType = cmdType;
                if (parms != null)
                {
                    cmd.Parameters.AddRange(parms);
                }
                row = cmd.ExecuteNonQuery();
            }
            return row;
        }
        #endregion

        #region 获取首行首列
        /// <summary>
        /// 获取首行首列
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="parms"></param>
        /// <returns></returns>
        public static object GetSingle(string sql, CommandType cmdType= CommandType.Text, params SqlParameter[] parms)
        {
            using (SqlConnection conn = CreateConn())
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.CommandType = cmdType;
                if (parms != null)
                {
                    cmd.Parameters.AddRange(parms);
                }
                return cmd.ExecuteScalar();
            }
        }
        #endregion
    }
时间: 2024-10-31 17:18:10

Ado.net 通用访问类的相关文章

C#:数据库通用访问类 SqlHelper

using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using System.Globalization; using System.IO; using System.Text.RegularExpressions; using System.Xml; using System.Reflection;

ADO.NET 数据访问类查询、属性扩展

今天,我首先在之前所做的人员管理系统的基础上,利用数据访问类进行了所有人员信息的查询. 主程序代码: List<Users> Ulist = new UsersData().Select(); if (Ulist.Count > 0)//判断是否包含语句 { foreach (Users u1 in Ulist)//遍历 { Console.WriteLine(u1.UserName + " " + u1.PassWord + " " + u1.N

SQLServer数据库通用访问类

private static string connString=ConfigurationManager.ConnStrings["connString"].ToString(); //在app.config中configuration添加相应的数据库连接配置文件 1.格式化sql语句 //执行增删改查 public static int Update(string sql) { SqlConnection conn=new SqlConnection(connString); Sq

ADO面向对象使用(实体类、数据访问类、范型集合)

ADO面向对象使用: !!!!!在其它文件夹下创建新类,加public!再考虑是不是引用数据库命名空间和其它类的命名空间!是否需要将构造函数写出来,将数据库的两个类实例化!!!!! 实体类:就是封装,将数据库中的表封装成同名的类,里面的成员变量与表里面的列是对应的,一个对象就代表数据库中一行数据: 字段扩展:查询关联的外键表数据,只读! 数据访问类:就是对于实体类对应的数据库进行操作的,就是写方法! 泛型集合: List<T> list = new List<T>(); T代表的就

DataAccess通用数据库访问类,简单易用,功能强悍

以下是我编写的DataAccess通用数据库访问类,简单易用,支持:内联式创建多个参数.支持多事务提交.支持参数复用.支持更换数据库类型,希望能帮到大家,若需支持查出来后转换成实体,可以自行扩展datarow转实体类,也可以搭配dapper.net实现更强大的功能. /// <summary> /// 通用数据库访问类,支持多种数据库,无直接依赖某个数据库组件 /// 作者:左文俊 /// 日期:2016-6-3 /// </summary> public class DataAc

【2017-04-20】Ado.Net与面向对象结合架构中的数据访问层(实体类,数据访问类)

开发项目三层架构:界面层.业务逻辑层.数据访问层 今天学习一下数据访问层,分为实体类和数据访问类 所有的类放在App_Code这个文件夹下边.养成一个好的习惯. 一.实体类 数据库中的表映射为一个类,类名与表名一致.表中的每一列,都为该类下的成员变量和属性也就是最简单的封装 把数据库中的表名变为类的类名. 把数据库中的每一个列,变为实体类中的成员变量和属性 列名与属性名一致.成员变量名:在列名前边加上下划线.因为在外部访问只能访问到属性,为了看起来一致. using System; using

ADO数据库访问类查询、属性扩展

1 数据库访问类查询 (1)查询一条 有参数:查询这条信息的主键: 有返回值:返回值是一个实体类: dr.read();执行一遍,读取这行信息并放进users类型中. ///返回users实体类类型 public users chayi(string name) { users u = null; com.CommandText = "select *from users where [email protected]"; com.Parameters.Clear(); com.Par

ADO.NET(完整修改和查询、实体类,数据访问类)

一.完整修改和查询 在编写c#语句时需考虑到用户体验,例如在编写修改语句时,需要考虑到输入的内容在数据库中是否能够找到. 中间变量运用. 1.先查 2.执行操作 完整修改语句: bool has = false; Console.Write("请输入要修改的用户名:"); string Uname = Console.ReadLine(); //到数据库中查询输入的用户名是否存在 SqlConnection conn = new SqlConnection("server=.

ado.net 实体类_数据访问类

实体类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 实体类_数据访问类.App_Code { public class Users { private int _code; /// <summary> /// code /// </summary> public int Code { get { return _code; } set