抖音粉丝群1
『7x24小时有问必答』

AI浪潮下的计算机行业——从业者现状与未来展望
因公众号更改推送规则,请点“在看”并加“星标”
第一时间获取精彩分享

哈喽,你好啊,我是雷工!
前面学习了C#操作SQLServer数据库数据的增删改查,
其中实现的过程中有很多代码是重复的,此时作为高阶程序员为了使代码更优雅,避免重复,
从而要考虑代码的复用技术,针对此案例中代码重复情况,结合项目中对数据库的操作还是挺普遍的,
为了便于其他项目也能够复用该方法,可以将数据访问写成一个通用的类。
01  新建类
新添加一个类,命名为SQLHelper.cs
1.png
02  添加引用
为了使数据库信息可配置,而不是写死的,可以在App.config内写相关信息,
通过该方式实现自由配置,需要先添加引用
2.png
找到System.Configuration,然后点击【确定】按钮。
3.png
然后在新建的类中引入命名空间
using System.Configuration;
03 App.config
创建任何项目都会有一个App.config
4.png
在App.config添加个节点
添加代码如下:
<connectionStrings>  <add  name="connString"  connectionString="Server=.;DataBase=LGAccountManagentDB;Uid=sa;Pwd=admin@123"/><!--connectionStrings-->
其中标红部分为复制的数据库相关信息。
添加位置如下:
5.png
然后在新建的SQLHelper类中添加如下代码,即可调用App.config中的数据库信息。
private static string connString = ConfigurationManager.ConnectionStrings["connString"].ToString();
04 封装类
总结:封装变化的,抽取不变的,变化的作为参数,不变的作为方法体!
封装完的增删改类代码为:
//同样引用如下命名空间using  System.Data;using  System.Data.SqlClient;using  System.Configuration;namespace  LeiGongNotes2{        ///  <summary>        ///  通用数据访问类        ///  </summary>        public  class  SQLHelper        {                //private  static  string  connString  =  "Server=.;DataBase=LGAccountManagentDB;Uid=sa;Pwd=admin@123";                private  static  string  connString  =  ConfigurationManager.ConnectionStrings["connString"].ToString();                ///  <summary>                ///  执行增删改操作的方法                ///  </summary>                ///  <param name="sql">                ///  <returns></returns>                public  static  int  Update(string  sql)                {                        //[1]、创建数据库连接对象                        SqlConnection  conn  =  new  SqlConnection(connString);                        //[2]、创建Command对象                        SqlCommand  cmd  =  new  SqlCommand(sql,  conn);                        //[3]、打开数据库连接                        conn.Open();                        //[4]、执行操作(下面的方法,只能用于执行insert、update、delete操作,不能执行delect操作)                        int  result  =  cmd.ExecuteNonQuery();                        //[5]、关闭连接                        conn.Close();                        return  result;                }        }}
05  用访问类访问数据库
5.1、首先在Program.cs中写个方法并调用
using  System;namespace  LeiGongNotes2{        internal  class  Program        {                static  void  Main(string[]  args)                {                        Console.WriteLine("欢迎大家关注【雷工笔记】!");                        Console.WriteLine("--------------------------");                      ExecuteInsertByHelper();                        Console.ReadLine();                }                static  void  ExecuteInsertByHelper()                {                        //定义SQL语句                        string  sql  =  "insert  into  Account(AccountName,AccountContent,originality,TypeId)";                        sql  +=  "  values('雷工笔记1','分享数据库知识|C#知识|上位机知识|组态软件|触摸屏|数字孪生|人生感悟',206,12),";                        sql  +=  "('小李食代1','分享家常菜|减脂餐|工作便当|营养餐|等健康食谱',199,11)";                        int  result  =  SQLHelper.Update(sql);                        Console.WriteLine(result);                }        }}
5.2、执行结果:
6.png
说明成功将SQL语句的两条数据插入到了数据库,
06  优化数据访问类
实际开发中,数据访问可能会产生异常,通常需要在代码中加入try{}catch{},
当运行异常时会抛出异常信息。
优化后代码如下:
public  static  int  Update(string  sql){        SqlConnection  conn  =  new  SqlConnection(connString);        SqlCommand  cmd  =  new  SqlCommand(sql,  conn);        try        {                conn.Open();                return  cmd.ExecuteNonQuery();        }        catch  (Exception  ex)        {                //此处可以捕获ex对象相关信息,然后保存到日志文件中                throw  new  Exception("执行Update发生异常:"  +  ex.Message);        }        finally  //此处为无论是否发生异常都要执行的代码        {                conn.Close();        }}
07  后记
以上为对增删改方法的精简,精简后的代码封装了重复部分,让代码整体简洁优雅了很多。
接下来继续学习对查询两个方法的封装。
有在学习同样内容的同学可以点赞+关注+在看,一起学习进步。
-更多内容可点击下方标签阅读-

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码