spring.net 连接mysql_Spring.Net框架三:使用Spring.Net框架实现多数据库

在前面的两篇文章中简单介绍了Spring.Net和如何搭建Spring.Net的环境,在本篇文章中将使用Spring.Net实现多数据库的切换。

一、建立一个空白的解决方案,名称为“SpringDotNot”

二、新建一个类库项目:IBLL

在IBLL类库里面有一个名称为IDatabaseService的接口,接口里面有两个方法:GetDataTableBySQL()和GetDbTyoe()。

代码如下:

1 usingSystem;2 usingSystem.Collections.Generic;3 usingSystem.Linq;4 usingSystem.Text;5 usingSystem.Threading.Tasks;6 usingSystem.Data;7

8 namespaceIBLL9 {10 ///

11 ///数据库服务接口12 ///

13 public interfaceIDatabaseService14 {15 ///

16 ///根据SQL语句查询数据17 ///

18 ///

19 DataTable GetDataTableBySQL();20

21 ///

22 ///获取数据库类型23 ///

24 ///

25 stringGetDbTyoe();26 }27 }

三、新建一个类库项目:BLLMsSql

BLLMsSql表示使用SqlServer数据库实现IBLL里面的接口,BLLMsSql要添加IBLL.dll的引用,代码如下:

1 usingSystem;2 usingSystem.Collections.Generic;3 usingSystem.Linq;4 usingSystem.Text;5 usingSystem.Threading.Tasks;6 usingIBLL;7 usingSystem.Data;8 usingSystem.Data.SqlClient;9 usingSystem.Configuration;10

11 namespaceBLLMsSql12 {13 ///

14 ///SqlServer服务类,实现IDatabaseService接口15 ///

16 public classSqlServerService :IDatabaseService17 {18 publicDataTable GetDataTableBySQL()19 {20 string strConn = ConfigurationManager.ConnectionStrings["SqlServer"].ConnectionString;21 DataTable dt = newDataTable();22 using (SqlConnection conn = newSqlConnection(strConn))23 {24 try

25 {26 string str = "select * from PtInfectionCard";27 SqlCommand cmd = newSqlCommand(str, conn);28 SqlDataAdapter adapter = newSqlDataAdapter(cmd);29 conn.Open();30 adapter.Fill(dt);31 }32 catch(Exception ex)33 {34

35

36 }37 finally

38 {39 conn.Close();40 }41

42 }43 returndt;44 }45

46 ///

47 ///返回SqlServer数据库48 ///

49 ///

50 public stringGetDbTyoe()51 {52 return "我是SQLServer数据库";53 }54 }55 }

四、新建一个类库项目:BLLOracle

BLLOracle表示使用Oracle数据库实现IBLL里面的接口,BLLOracle要添加IBLL.dll的引用,代码如下:

1 usingSystem;2 usingSystem.Collections.Generic;3 usingSystem.Linq;4 usingSystem.Text;5 usingSystem.Threading.Tasks;6 usingIBLL;7 usingSystem.Data;8 usingSystem.Data.OracleClient;9 usingSystem.Configuration;10

11 namespaceBLLOracle12 {13 ///

14 ///Oracle数据服务类,实现IDatabaseService接口15 ///

16 public classOracleService :IDatabaseService17 {18 publicDataTable GetDataTableBySQL()19 {20 string strConn = ConfigurationManager.ConnectionStrings["ORACLE"].ConnectionString;21 DataTable dt = newDataTable();22 using (OracleConnection conn = newOracleConnection(strConn))23 {24 try

25 {26 string str = "select * from emp";27 OracleCommand cmd = newOracleCommand(str, conn);28 OracleDataAdapter adapter = newOracleDataAdapter(cmd);29 conn.Open();30 adapter.Fill(dt);31 }32 catch(Exception ex)33 {34

35 }36 finally

37 {38 conn.Close();39 }40 }41

42 returndt;43 }44

45 ///

46 ///返回Oracle数据库47 ///

48 ///

49 public stringGetDbTyoe()50 {51 return "我是Oracle数据库";52 }53 }54 }

五、客户端调用

添加一个winform应用程序,界面上有一个DataGridView和一个Button按钮,点击Button按钮的时候,从数据库里面取数据并通过DataGridView展示查询出的数据,界面设计如下:

ce9210cc69949844768c428ef3860bde.png

Spring.Net的配置信息都写在项目的配置文件(即App.config)中,配置文件如下:

1 <?xml version="1.0" encoding="utf-8"?>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

后台代码如下:

1 usingSpring.Context;2 usingSystem;3 usingSystem.Collections.Generic;4 usingSystem.ComponentModel;5 usingSystem.Data;6 usingSystem.Drawing;7 usingSystem.Linq;8 usingSystem.Text;9 usingSystem.Threading.Tasks;10 usingSystem.Windows.Forms;11 usingIBLL;12

13 namespaceWinClient14 {15 public partial classFrmMain : Form16 {17 publicFrmMain()18 {19 InitializeComponent();20 }21

22 ///

23 ///加载数据24 ///

25 ///

26 ///

27 private void btn_LoadData_Click(objectsender, EventArgs e)28 {29 //从配置文件读取配置

30 IApplicationContext ctx =Spring.Context.Support.ContextRegistry.GetContext();31 //获取具体的实现类

32 IDatabaseService dbService = ctx.GetObject("bll") asIDatabaseService;33 //从数据库查询数据

34 DataTable dt =dbService.GetDataTableBySQL();35 //将查询出的数据绑定到DataGridView中

36 this.dgv_Demo.DataSource =dt;37 }38 }39 }

配置文件中设置的是使用OracleService实现类,所以程序运行结果:

1ad5c3f14a1aabc3fcaaae6d3d71f1f2.png

如果要使用SqlServer数据库,只需要修改配置文件中object节点中type的属性值即可:

改成使用SqlServer数据库以后的运行结果:

46effbb7e9a667b56cdb40823a9dccd7.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值