采用泛型链接多类型数据库[含源码]
最近在看vs2005上关于泛型的介绍,同时考虑到手头上使用的DBSERVICE库中文件过多(共7个CS文件),想利用泛型技术对它进行“瘦身”,最后系统只有2个文件。现把相关文件做一简单说明:
说明:DbAccess.cs文件, InitailDB函数采用反射进行相关信息搜集
1
/// <summary>
2
/// 初始化数据库信息
3
/// </summary>
4
/// <typeparam name="T"></typeparam>
5
/// <param name="dai"></param>
6
public static void InitailDB<T>(T dai)
7
{
8
Type type = dai.GetType();
9
object[] args = null;
10
concreteDbConn = (IDbConnection)type.GetMethod("CreateConnection").Invoke(dai, args);
11
concreteDbConn.ConnectionString = (string) type.GetMethod("GetConnectionString").Invoke(dai, args);
12
concreteDbConn.Open();
13
concreteDbCommand = (IDbCommand)type.GetMethod("CreateCommand").Invoke(dai, args);
14
concreteDbTrans = (IDbTransaction)type.GetMethod("CreateTransaction").Invoke(dai, new object[] { concreteDbConn });
15
concreteDbCommand.Connection = concreteDbConn;
16
concreteDbCommand.Transaction = concreteDbTrans;
17
concreteDbAdapter = (IDbDataAdapter)type.GetMethod("CreateDataAdapter").Invoke(dai, args);
18
}
19

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

调用方法:CreateGenericInstance(),只要将相应的类型做为参数加入到InitailDB<T>中即可
InitailDB<Generic_Access<SqlConnection, SqlCommand, SqlDataAdapter>>(
Generic_Access < SqlConnection, SqlCommand, SqlDataAdapter >.GetInstance());break;
泛型类DB_Generic.cs代码如下 :



































































































最后是测试代码:using DB_Generic;
1
public partial class DB_Generic_Default : System.Web.UI.Page
2
{
3
protected void Page_Load(object sender, EventArgs e)
4
{
5
if (!Page.IsPostBack)
6
{
7
8
Response.Write(DbAccess.SelectMaxID("users", "ID") + "<BR>");
9
10
string sql = "Select top 10 * From users Order By id asc";
11
Repeater1.DataSource = DbAccess.SelectAllSqlString(sql).Tables[0].DefaultView;
12
Repeater1.DataBind();
13
14

2

3

4

5

6

7

8

9

10

11

12

13

14

.....
详情见 源代码
谢谢大家!
如须转载,请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix