首页 > 数据库 >数据库访问通用类

数据库访问通用类

时间:2022-10-12 12:35:21浏览次数:60  
标签:通用 Parameters 数据库 cmd paras 访问 sql new conn

 

 

 

using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;

namespace DBHelper
{
    public class sqlServerDBHelper
    {
        //<connectionStrings>
        //<add name = "connStr" connectionString="server=.;database=TestBase;uid=lyc;pwd=123456" providerName="System.Data.SqlClient"/>
        //</connectionStrings>
        private static readonly string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;


        //1、执行增删改查任务,Insert、Delete、Update
        //2、执行返回一个结果的查询
        //3、执行查询,返回sqldatareader
        //4、执行查询,返回dataset
        //5、执行查询,返回datatable

        /// <summary>
        /// 执行T-SQL ,返回受影响的行数  Insert Update Delete
        /// </summary>
        /// <param name="sql">slq语句</param>
        /// <param name="cmdType">sql命令类型,1=sql语句,2=存储过程</param>
        /// <param name="paras">sql参数</param>
        /// <returns></returns>
        public static int ExecuteNonQuery(string sql, int cmdType, params SqlParameter[] paras)
        {
            int count = 0;
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                SqlCommand cmd = new SqlCommand(sql, conn);
                if (cmdType == 2) cmd.CommandType = CommandType.StoredProcedure;
                if (paras != null && paras.Length > 0) cmd.Parameters.AddRange(paras);
                conn.Open();
                count = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                conn.Close();
            }
            return count;
        }

        /// <summary>
        /// 执行查询,返回结果集第一行第一列的值,忽略其他行或列 object
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="cmdType"></param>
        /// <param name="paras"></param>
        /// <returns></returns>
        public static object ExecuteScalar(string sql, int cmdType, params SqlParameter[] paras)
        {
            object result = null;
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                SqlCommand cmd = new SqlCommand(sql, conn);
                if (cmdType == 2) cmd.CommandType = CommandType.StoredProcedure;
                if (paras != null && paras.Length > 0) cmd.Parameters.AddRange(paras);
                conn.Open();
                result = cmd.ExecuteScalar();
                cmd.Parameters.Clear();
                conn.Close();
            }
            return result;
        }

        /// <summary>
        /// 执行查询,生成SqlDataReader
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="cmdType"></param>
        /// <param name="paras"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public static SqlDataReader ExecuteReader(string sql, int cmdType, params SqlParameter[] paras)
        {
            SqlDataReader result = null;
            SqlConnection conn = new SqlConnection(connStr);
            SqlCommand cmd = new SqlCommand(sql, conn);
            if (cmdType == 2) cmd.CommandType = CommandType.StoredProcedure;
            if (paras != null && paras.Length > 0) cmd.Parameters.AddRange(paras);
            try
            {
                conn.Open();
                result = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                cmd.Parameters.Clear();
            }
            catch (SqlException ex)
            {
                conn.Close();
                throw new Exception("查询异常", ex);
            }

            return result;
        }

        /// <summary>
        /// 填充DataSet  一个或多个结果集 
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="cmdType"></param>
        /// <param name="paras"></param>
        /// <returns></returns>
        public static DataSet GetDataSet(string sql, int cmdType, params SqlParameter[] paras)
        {
            DataSet dt = null;
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                SqlCommand cmd = new SqlCommand(sql, conn);
                if(cmdType == 2) cmd.CommandType = CommandType.StoredProcedure;
                if(paras != null && paras.Length > 0) cmd.Parameters.AddRange(paras);
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                conn.Open();
                adapter.Fill(dt);
                cmd.Parameters.Clear();
                conn.Close();
            }
            return dt;
        }

        public static DataTable GetDataTable(string sql ,int cmdType,params SqlParameter[] paras)
        {
            DataTable dt = null;
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                SqlCommand cmd = new SqlCommand (sql, conn);
                if (cmdType == 2) cmd.CommandType = CommandType.StoredProcedure;
                if (paras != null && paras.Length > 0) cmd.Parameters.AddRange(paras);
                conn.Open();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);
                cmd.Parameters.Clear();
                conn.Close();
            }
            return dt;
        }
    }
}

 

标签:通用,Parameters,数据库,cmd,paras,访问,sql,new,conn
From: https://www.cnblogs.com/hanzq/p/16784114.html

相关文章

  • 数据库的备份和还原
    1.命令行: *语法: *备份:mysqldump-u用户名-p密码数据库名称>保存的路径 *还原: 1.登录数据库 2.创建数据库 ......
  • SQL分类和DDL_操作数据库_创建&查询
    SQL分类:(1)DDL(DataDefinitionLanguage)数据定义语言用来定义数据库对象:数据库,表,列等。关键字:create,drop,alter等(2)DML(DataManipulationLanguage)数据操作语言......
  • 华为再出新品:GaussDB(for Influx)数据库的魅力了解一下
    华为再出新品:GaussDB(forInflux)数据库的魅力了解一下​华为自用的GaussDB(forInflux)数据库逐渐深入大众视野,到底值不值得期待?​时序数据库想必大家都有所耳闻,现在在很......
  • mysql 数据库字段类型大全
    数值tinyint1.十分小的数据,占用1个字节,有符号的范围是-128-127,无符号的范围是从0到255的整型数据2.java类型Integersmallint1.较小的数据,占用2个字节2.java类型I......
  • 第二章-关系数据库
     2.1关系数据结构形式化定义:2.1.1关系:单一的数据结构-关系:现实世界的实体以及实体间的各种联系均用关系来表示逻辑结构-二维表:从用户的角度,关系模型中的......
  • 数据库的基本概念和常见的数据库软件介绍
    数据库的基本概念1.数据库的英文单词:DataBase简称:DB2.什么是数据库?用于存储和管理数据的仓库3.数据库的特点持久化存储数据的,其实数据库就是一个文件系统方便存......
  • 两个或多个docker容器之间通过名字相互访问
    前言需要部署的项目中有数据库和Tomcat,Tomcat需要连接到数据库容器的3306端口上,由于容器的IP地址会变化,又不能写死IP地址,所以就有了下文。docker网卡介绍docker......
  • 【精品】vue3中setup语法糖下通用的分页插件
    注意:本博客理论基础:https://blog.51cto.com/lianghecai/5743179效果自定义分页插件:PagePlugin.vue<scriptsetuplang="ts">//total:用来传递数据总条数//pageSize......
  • Javaweb学习 -----------------操作数据库中的数据
    1、添加数据 insertinto表名(列名1,列名2,...)values(值1,值2,...);//给指定列添加数据insertinto表名values(值1,值2,...);......
  • 非关系型数据库(NOSQL)和关系型数据库(SQL)区别详解
    前言:在我们的日常开发中,关系型数据库和非关系型数据库的使用已经是一个成熟的软件产品开发过程中必不可却的存储数据的工具了。那么用了这么久的关系数据库和非关系型数......