首页 > 数据库 >C#中的数据库访问类DBHelper

C#中的数据库访问类DBHelper

时间:2023-12-17 18:04:30浏览次数:29  
标签:string pms C# 数据库 DBHelper sql new dt SqlParameter

1、在配置文件中添加连接字符串

首先在配置文件中的<configuration>中加入数据库连接字符串,配置文件后缀为.config,例如:App.config

<connectionStrings>
        <add name="你给此条链接起的名字,随便起,访问的时候可以用。比如:AAA" connectionString="Data Source=你的服务器地址;Initial Catalog=你要连接的数据库名字;Persist Security Info=True;User ID=数据库用户名;Password=数据库密码" providerName="System.Data.SqlClient" />
    </connectionStrings>

 

 

2、新建一个帮助类 

如果你只有一个类库,那就直接在你的类库新建一个类,名为“DBHelper”(随意起),如果你用三层,那就还有一个BLL业务逻辑层和一个DAL数据访问层,把DBHelper类放在DAL数据访问层中.

C#中的数据库访问类DBHelper_配置文件

3、在帮助类中添加代码

1、定义一个变量获取配置文件中的数据库连接字符串

string cnotallow= ConfigurationManager.ConnectionStrings["你刚刚自定义的AAA"].ConnectionString.ToString();

 2、开始写你需要的方法,举例两个最基本的最常用的

//执行增、删、改的方法:ExecuteNonQuery,返回受影响的行数
        public int ExecuteNonQuery(string sql, params SqlParameter[] pms)
        {
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    if (pms != null)
                    {
                        cmd.Parameters.AddRange(pms);
                    }
                    conn.Open();
                    return cmd.ExecuteNonQuery();
                }
            }
        }
        //将查出的数据装到table里,返回一个DataTable
        public DataTable GetDatatableData(string sql, params SqlParameter[] pms)
        {
            DataTable dt = new DataTable();

            using (SqlDataAdapter adapter = new SqlDataAdapter(sql, connstr))
            {
                if (pms != null)
                {
                    adapter.SelectCommand.Parameters.AddRange(pms);
                }
                adapter.Fill(dt);
            }
            return dt;
        }

做一个讲解,params SqlParameter[] pms是用来接收SqlParameter传来的参数的,也可以只传一个sql语句,也可以参数化,建议是参数化防止被SQL注入

4、调用方法

//首先实例化DBHelper
        DBHelper dbhelper = new DBHelper();
        //定义一个查询的方法
        public void GetStuName()
        {
            string stuid = "12345";//可以是从别的地方获取到的id
            //定义SQL语句,这里用SqlParameter参数化防止sql注入,比较安全
            //注意:使用SqlParameter需要using System.Data.SqlClient;
            string sql = "select StuId,StuName,StuSex,StuAge from Student where StuId =@ID";
            SqlParameter[] ps =
            {
                new SqlParameter("@ID",stuid)
            };
            //定义一个DataTable用来存放查出来的结果,这里调用DBHelper里的GetDatatableData方法
            DataTable dt = dbhelper.GetDatatableData(sql, ps);
            //如果你有数据控件可以直接将控件的数据源指定为这个dt,这样数据就会直接在控件中显示
            //也可以取出dt中的某个值显示在页面上,比如这里我取出第一行数据对应的学生的性别
            string AnyoneSex = dt.Rows[0]["StuSex"].ToString();
            //输出弹窗显示第一行数据对应的学生的性别,也可以放到页面上
            MessageBox.Show(AnyoneSex);
        }
        //定义一个增删改的方法,都是返回受影响的行数,所以通用,这里用添加数据
        public void InsertData()
        {
            string name = "张三";
            string sex = "男";
            string age = "18";
            string sql = "insert into Student(StuName,StuSex,StuAge) values(@StuName,@StuSex,@StuAge)";
            SqlParameter[] ps =
            {
                new SqlParameter("@StuName",name),
                new SqlParameter("@StuName",sex),
                new SqlParameter("@StuName",age)
            };
            //然后传到dbhelper中的ExecuteNonQuery,定义一个int类型的变量用来接收返回的受影响的行数
            int num = dbhelper.ExecuteNonQuery(sql, ps);
            //数据有变化则说明插入成功
            if (num > 0)
            {
                MessageBox.Show("插入成功");
            }
        }

转载请注明出处,谢谢

标签:string,pms,C#,数据库,DBHelper,sql,new,dt,SqlParameter
From: https://blog.51cto.com/u_16371710/8862424

相关文章

  • 《初学C语言第30天》
    ////////————————9.指针和数组笔试题解析////一维数组,数组名的理解,指针的运算与指针类型的意义//#include<stdio.h>//intmain()//{//元素的大小:元素所占内存空间的大小// inta[]={1,2,3,4};//由初始化内容可知数组元素个数为4字节// printf("%d\n",sizeof(a)......
  • MongoDB:Java开发者的新型数据库解决方案
    一、介绍MongoDB是一种高性能、开源的、面向文档的数据库系统,它使用C++语言编写,并提供了一系列强大的功能和特性。MongoDB具有灵活的数据模型、高效的查询性能、强大的扩展性和易用性等特点,使得它成为Java开发者的新型数据库解决方案。二、MongoDB的特点文档型数据模型:MongoDB采用......
  • 这是我在51CTO博客的第一篇博文
    【第1段】自我介绍大家好,我是周飞,一名Java高级工程师。我主要专注于基于Activiti流程引擎和动态表单技术的低代码平台开发,同时也涉足基于OptaPlanner排程引擎技术在工业生产上的应用。我的工作经验让我对企业级应用的开发和优化有了深入的理解,尤其是在流程自动化和生产调度优化方......
  • #yyds干货盘点#MongoDB 封装 CRUD 方法
    CRUD是指创建(Create)、读取(Read)、更新(Update)和删除(Delete)四种基本的数据处理操作。在软件开发中,CRUD方法通常用于对数据库或其他存储系统中的数据进行操作。具体来说,CRUD方法包括以下四种操作:创建(Create) :向数据库或其他存储系统中插入新数据。读取(Read) :从数据库或其他......
  • 238-hover 、active、focus伪类
    :hover伪类用于选择鼠标悬停在元素上的状态:active伪类表示元素处于激活状态,通常是在用户点击并按住鼠标按钮时触发。这一状态通常在点击瞬间发生,持续到鼠标按钮释放。:focus伪类表示元素获得焦点,通常是通过键盘(Tab键)或者其他方式进行焦点切换时触发。对于可点击元素,点击时也......
  • Docker Compose 快速搭建 Redis 单机版
    Redis是非常流行的缓存中间件,其具有功能强大和部署简单的优势,我们在CentOS上使用yum就能够在线安装Redis。之所以要介绍使用Docker进行容器化部署Redis,主要原因是当前容器化部署是主流,而且能够保障服务器文件系统的整洁。本篇博客主要介绍如何使用docker-compose快速......
  • THUPC2024 游记
    大约是进复赛了,那就写个游记吧。队伍名:福州一树开车大队。队伍组成:CTTDay349.64分选手,noip260分的候选队,NOI2022E类铁牌获得者。2023.12.17(初赛)原定策略是我做模3余0的题,lzq做模3余1的题,lhr做模3余2的题。一开场我有点重量级的,对着C做了1h发现不会......
  • THUPC2024初赛 游记
    队伍组成:\(\textJ\color{red}{\text{ijidawang}}\),负责切题;\(\textK\color{red}{\text{8He}}\),负责切题;\(\color{#008000}{\text{x383494}}\),负责拖后腿。Day-1之前组的一个队队长突然没法打比赛,正好看到\(\textJ\color{red}{\text{ijidawang}}\)的队伍缺人,就组了。D......
  • [ARC111F] Do you like query problems?
    题意:给出三个数\(n,m,q\)。你有一个长度为\(n\)的序列\(a\),初始全为为\(0\),你有三种操作:操作\(1\):给出\(l,r,v\),让区间\([l,r]\)对\(v\)取\(\min\)。操作\(2\):给出\(l,r,v\),让区间\([l,r]\)对\(v\)取\(\max\)。操作\(3\),给出\(l,r\),求区间和,将其累加进......
  • 数据库版本历史的总结-非信创部分
    数据库版本历史的总结-非信创部分OracleOracle数据库是最悠久的关系型数据库.诞生于美国军方的管理项目他的第一个版本是Oracle2上世纪八九十年代的Oracle8和Oracle9是非常成功的版本.进入21世纪后Oracle发布了三个大版本Oracle10goracle11goracle12c(Oracle9......