网站首页 > 开源技术 正文
哈喽,你好啊,我是雷工!
前面学习了C#操作SQLServer数据库数据的增删改查,
《C#知识|通过ADO.NET实现应用程序对数据库的增、删、改操作。》
其中实现的过程中有很多代码是重复的,此时作为高阶程序员为了使代码更优雅,避免重复,
从而要考虑代码的复用技术,针对此案例中代码重复情况,结合项目中对数据库的操作还是挺普遍的,
为了便于其他项目也能够复用该方法,可以将数据访问写成一个通用的类。
01 新建类
新添加一个类,命名为SQLHelper.cs
02 添加引用
为了使数据库信息可配置,而不是写死的,可以在App.config内写相关信息,
通过该方式实现自由配置,需要先添加引用
找到System.Configuration,然后点击【确定】按钮。
然后在新建的类中引入命名空间
using System.Configuration;
03 App.config
创建任何项目都会有一个App.config
在App.config添加个节点
添加代码如下:
<connectionStrings>
<add name="connString" connectionString="Server=.;DataBase=LGAccountManagentDB;Uid=sa;Pwd=admin@123"/>
</connectionStrings>
其中标红部分为复制的数据库相关信息。
添加位置如下:
然后在新建的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"></param>
/// <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、执行结果:
说明成功将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 后记
以上为对增删改方法的精简,精简后的代码封装了重复部分,让代码整体简洁优雅了很多。
接下来继续学习对查询两个方法的封装。
有在学习同样内容的同学可以点赞+关注+在看,一起学习进步。
猜你喜欢
- 2024-10-21 C#实战|人员管理系统[13]:修改密码功能的实现
- 2024-10-21 mybatis-plus sql注入原理(3.0.1)
- 2024-10-21 C#实战|人员管理系统[22]:按照所属组织名称查询人员列表
- 2024-10-21 C#实战|人员管理系统[33]:实现删除人员信息的功能
- 2024-10-21 C#实战|人员管理系统[32]:修改人员信息的实现
- 2024-10-21 实例讲解MyBatisPlus自定义sql注入器方法
- 2024-10-21 SQL辅助类(sql添加辅助数据库文件)
- 2024-10-21 C#知识|账号管理系统:使用带参数的SQL语句编程添加账号的方法。
- 2024-10-21 SQL注入攻防入门详解(简单的sql注入攻击教程)
- 2024-10-21 SQL - 编写SqlHelper帮助类,简化数据操作代码 173
你 发表评论:
欢迎- 03-19基于layui+springcloud的企业级微服务框架
- 03-19开箱即用的前端开发模板,扩展Layui原生UI样式,集成第三方组件
- 03-19SpringMVC +Spring +Mybatis + Layui通用后台管理系统OneManageV2.1
- 03-19SpringBoot+LayUI后台管理系统开发脚手架
- 03-19layui下拉菜单form.render局部刷新方法亲测有效
- 03-19Layui 遇到的坑(记录贴)(layui chm)
- 03-19基于ASP.NET MVC + Layui的通用后台开发框架
- 03-19LayUi自定义模块的定义与使用(layui自定义表格)
- 最近发表
-
- 基于layui+springcloud的企业级微服务框架
- 开箱即用的前端开发模板,扩展Layui原生UI样式,集成第三方组件
- SpringMVC +Spring +Mybatis + Layui通用后台管理系统OneManageV2.1
- SpringBoot+LayUI后台管理系统开发脚手架
- layui下拉菜单form.render局部刷新方法亲测有效
- Layui 遇到的坑(记录贴)(layui chm)
- 基于ASP.NET MVC + Layui的通用后台开发框架
- LayUi自定义模块的定义与使用(layui自定义表格)
- Layui 2.9.11正式发布(layui2.6)
- Layui 2.9.13正式发布(layui2.6)
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)