编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

C#知识|通用数据访问类SQLHelper的编写

wxchong 2024-10-21 13:04:02 开源技术 14 ℃ 0 评论

#头条提现门槛下放至1元啦#

哈喽,你好啊,我是雷工!

前面学习了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 后记

以上为对增删改方法的精简,精简后的代码封装了重复部分,让代码整体简洁优雅了很多。

接下来继续学习对查询两个方法的封装。

有在学习同样内容的同学可以点赞+关注+在看,一起学习进步。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表