使用Spring.Net框架實(shí)現(xiàn)多數(shù)據(jù)庫(kù)
一、建立一個(gè)空白的解決方案,名稱(chēng)為“SpringDotNot”
二、新建一個(gè)類(lèi)庫(kù)項(xiàng)目:IBLL
在IBLL類(lèi)庫(kù)里面有一個(gè)名稱(chēng)為IDatabaseService的接口,接口里面有兩個(gè)方法:GetDataTableBySQL()和GetDbTyoe()。
代碼如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; namespace IBLL { /// <summary> /// 數(shù)據(jù)庫(kù)服務(wù)接口 /// </summary> public interface IDatabaseService { /// <summary> /// 根據(jù)SQL語(yǔ)句查詢(xún)數(shù)據(jù) /// </summary> /// <returns></returns> DataTable GetDataTableBySQL(); /// <summary> /// 獲取數(shù)據(jù)庫(kù)類(lèi)型 /// </summary> /// <returns></returns> string GetDbTyoe(); } }
三、新建一個(gè)類(lèi)庫(kù)項(xiàng)目:BLLMsSql
BLLMsSql表示使用SqlServer數(shù)據(jù)庫(kù)實(shí)現(xiàn)IBLL里面的接口,BLLMsSql要添加IBLL.dll的引用,代碼如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using IBLL; using System.Data; using System.Data.SqlClient; using System.Configuration; namespace BLLMsSql { /// <summary> /// SqlServer服務(wù)類(lèi),實(shí)現(xiàn)IDatabaseService接口 /// </summary> public class SqlServerService :IDatabaseService { public DataTable GetDataTableBySQL() { string strConn = ConfigurationManager.ConnectionStrings["SqlServer"].ConnectionString; DataTable dt = new DataTable(); using (SqlConnection conn = new SqlConnection(strConn)) { try { string str = "select * from PtInfectionCard"; SqlCommand cmd = new SqlCommand(str, conn); SqlDataAdapter adapter = new SqlDataAdapter(cmd); conn.Open(); adapter.Fill(dt); } catch (Exception ex) { } finally { conn.Close(); } } return dt; } /// <summary> /// 返回SqlServer數(shù)據(jù)庫(kù) /// </summary> /// <returns></returns> public string GetDbTyoe() { return "我是SQLServer數(shù)據(jù)庫(kù)"; } } }
四、新建一個(gè)類(lèi)庫(kù)項(xiàng)目:BLLOracle
BLLOracle表示使用Oracle數(shù)據(jù)庫(kù)實(shí)現(xiàn)IBLL里面的接口,BLLOracle要添加IBLL.dll的引用,代碼如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using IBLL; using System.Data; using System.Data.OracleClient; using System.Configuration; namespace BLLOracle { /// <summary> /// Oracle數(shù)據(jù)服務(wù)類(lèi),實(shí)現(xiàn)IDatabaseService接口 /// </summary> public class OracleService :IDatabaseService { public DataTable GetDataTableBySQL() { string strConn = ConfigurationManager.ConnectionStrings["ORACLE"].ConnectionString; DataTable dt = new DataTable(); using (OracleConnection conn = new OracleConnection(strConn)) { try { string str = "select * from emp"; OracleCommand cmd = new OracleCommand(str, conn); OracleDataAdapter adapter = new OracleDataAdapter(cmd); conn.Open(); adapter.Fill(dt); } catch (Exception ex) { } finally { conn.Close(); } } return dt; } /// <summary> /// 返回Oracle數(shù)據(jù)庫(kù) /// </summary> /// <returns></returns> public string GetDbTyoe() { return "我是Oracle數(shù)據(jù)庫(kù)"; } } }
五、客戶(hù)端調(diào)用
添加一個(gè)winform應(yīng)用程序,界面上有一個(gè)DataGridView和一個(gè)Button按鈕,點(diǎn)擊Button按鈕的時(shí)候,從數(shù)據(jù)庫(kù)里面取數(shù)據(jù)并通過(guò)DataGridView展示查詢(xún)出的數(shù)據(jù),界面設(shè)計(jì)如下:
Spring.Net的配置信息都寫(xiě)在項(xiàng)目的配置文件(即App.config)中,配置文件如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <!--注冊(cè)spring的切面--> <sectionGroup name="spring"> <!--注冊(cè)spring的上下文切面--> <section name="context" type="Spring.Context.Support.ContextHandler,Spring.Core"/> <!--注冊(cè)spring的對(duì)象切面--> <section name="objects" type="Spring.Context.Support.DefaultSectionHandler,Spring.Core"/> </sectionGroup> </configSections> <!--Spring的依賴(lài)注入配置--> <spring> <context> <!--使用配置文件里面spring節(jié)點(diǎn)下面objects節(jié)點(diǎn)里面的資源--> <resource uri="config://spring/objects"/> </context> <!--objects節(jié)點(diǎn)內(nèi)配置需要注入到spring容器內(nèi)的類(lèi)--> <objects xmlns="http://www.springframework.net"> <!--type組成: 逗號(hào)前面是命名空間.類(lèi)名 逗號(hào)后面是程序集名稱(chēng)--> <object id="bll" type="BLLOracle.OracleService,BLLOracle"/> </objects> </spring> <connectionStrings> <!--Oracle數(shù)據(jù)庫(kù)連接字符串--> <add name="ORACLE" connectionString="Data Source=127.0.0.1/orcl;Persist Security Info=True;User ID=scott;Password=tiger;Unicode=True;"/> <!--SqlServer數(shù)據(jù)庫(kù)連接字符串--> <add name="SqlServer" connectionString="Data Source=.;Initial Catalog=******;Persist Security Info=True;User ID=******;Password=*********"/> </connectionStrings> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> </configuration>
后臺(tái)代碼如下:
using Spring.Context; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using IBLL; namespace WinClient { public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); } /// <summary> /// 加載數(shù)據(jù) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_LoadData_Click(object sender, EventArgs e) { // 從配置文件讀取配置 IApplicationContext ctx = Spring.Context.Support.ContextRegistry.GetContext(); // 獲取具體的實(shí)現(xiàn)類(lèi) IDatabaseService dbService = ctx.GetObject("bll") as IDatabaseService; // 從數(shù)據(jù)庫(kù)查詢(xún)數(shù)據(jù) DataTable dt = dbService.GetDataTableBySQL(); // 將查詢(xún)出的數(shù)據(jù)綁定到DataGridView中 this.dgv_Demo.DataSource = dt; } } }
配置文件中設(shè)置的是使用OracleService實(shí)現(xiàn)類(lèi),所以程序運(yùn)行結(jié)果:
如果要使用SqlServer數(shù)據(jù)庫(kù),只需要修改配置文件中object節(jié)點(diǎn)中type的屬性值即可:
<object id="bll" type="BLLMsSql.SqlServerService,BLLMsSql"/>
改成使用SqlServer數(shù)據(jù)庫(kù)以后的運(yùn)行結(jié)果:
到此這篇關(guān)于Spring.Net框架實(shí)現(xiàn)多數(shù)據(jù)庫(kù)的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
運(yùn)行page頁(yè)面時(shí)的事件執(zhí)行順序及頁(yè)面的回發(fā)與否深度了解
page頁(yè)面時(shí)的事件執(zhí)行順序的了解對(duì)于一些.net開(kāi)發(fā)者起到者尤關(guān)重要的作用;頁(yè)面的回發(fā)與否會(huì)涉及到某些事件執(zhí)行與不執(zhí)行,在本文中會(huì)詳細(xì)介紹,感興趣的朋友可以了解下2013-01-01asp.net使用jquery實(shí)現(xiàn)搜索框默認(rèn)提示功能
這篇文章主要介紹了asp.net使用jquery實(shí)現(xiàn)搜索框默認(rèn)提示功能,大家參考使用吧2014-01-01asp.net中的check與uncheck關(guān)鍵字用法解析
這篇文章主要介紹了asp.net中的check與uncheck關(guān)鍵字用法,以實(shí)例形式較為詳細(xì)的分析了check與uncheck關(guān)鍵字的各種常見(jiàn)用法與使用時(shí)的注意事項(xiàng),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10ASP.NET Core擴(kuò)展庫(kù)之日志功能的使用詳解
這篇文章主要介紹了ASP.NET Core擴(kuò)展庫(kù)之日志功能的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用.NET技術(shù),感興趣的朋友可以了解下2021-03-03.net簡(jiǎn)單使用Log4net的方法(多個(gè)日志配置文件)
log4net是.net中常用的一個(gè)日志記錄工具,下面這篇文章主要給大家介紹了關(guān)于.net簡(jiǎn)單使用Log4net的方法(多個(gè)日志配置文件),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧2018-11-11asp.net中Timer無(wú)刷新定時(shí)器的實(shí)現(xiàn)方法
這篇文章主要介紹了asp.net中Timer無(wú)刷新定時(shí)器的實(shí)現(xiàn)方法,是一個(gè)非常具有實(shí)用價(jià)值的技巧,需要用到Ajax技術(shù),需要的朋友可以參考下2014-08-08c# 讀取文件內(nèi)容存放到int數(shù)組 array.txt
c# 讀取文本的內(nèi)容,并且將內(nèi)容保存到int數(shù)組中,大家可以學(xué)習(xí)到c#一些數(shù)組跟讀取內(nèi)容的函數(shù)。2009-04-04