在数据库应用程序的开发中,往往一个应用程序要从多个数据库中取得所要的业务数据。对于ADO.NET更是如此,一个DataSet,可能是从几个数据库中取得的数据集合。为此开发一个访问数据库通用接口显得更为方便、灵活。下面是一个针对.NET提供的四种访问数据库的通用类,每个类都有具体实现了一些常用访问数据库的方法。

1、DataProvider.cs 此类返回一个访问数据库的接口实例。

.NET通用访问数据库类(C#版)using System;
.NET通用访问数据库类(C#版)
namespace FenceKing.DataProviders
}

 

2、IDataProvider.cs 访问数据库的接口类。

 

.NET通用访问数据库类(C#版)using System;
.NET通用访问数据库类(C#版)
.NET通用访问数据库类(C#版)
namespace FenceKing.DataProviders


3、OracleDataProvider.cs 访问Oracle的类

.NET通用访问数据库类(C#版)using System;
.NET通用访问数据库类(C#版)
using System.Data;
.NET通用访问数据库类(C#版)
using System.Data.OracleClient;
.NET通用访问数据库类(C#版)
.NET通用访问数据库类(C#版)
namespace FenceKing.DataProviders

 

 

App.config 应用程序配置文件。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <appSettings>
  <!--   此处显示用户应用程序和配置的属性设置。-->
  <!--   示例:<add key="settingName" value="settingValue"/> -->
  <!-- 连接数据库的字符串 -->
  <add key="oracleConnectionString" value="User Id=southfence;Data Source=FENCEORA;Password=southfence;Persist Security Info=true;" />
  <add key="sqlConnectionString" value="workstation id=FENCEKING;packet size=4096;integrated security=SSPI;data source=&quot;FENCEKING\FENCESQL&quot;;persist security info=True;initial catalog=Northwind" />
  <add key="oleDbConnectionString" value="" />
  <add key="odbcConnectionString" value="" />
 </appSettings>
</configuration>


FenceKingTest 客户测试

public FenceKingTest()
  {
   //
   // Windows 窗体设计器支持所必需的
   //
   InitializeComponent();

   //
   // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
   //  

// 声明一个接口,返回一个访问SQL Server的数据库实例
   FenceKing.DataProviders.IDataProvider sqlDataProvider = FenceKing.DataProviders.DataProvider.CreateDataProvider(DataProvider.DataProviderType.SqlDataProvider);
   string[] sql = new string[2];
   sql[0] = "SELECT * FROM Orders";
   sql[1] = "SELECT CustomerID, CompanyName, ContactName FROM Customers"; 
   DataSet ds;
   string[] tableName = new string[]{"Orders","Customers"};  
   ds = sqlDataProvider.RetriveDataSet(sql, tableName);
   ds.Relations.Add("CustomerOrders",ds.Tables["Customers"].Columns["CustomerID"],ds.Tables["Orders"].Columns["CustomerID"]);
   this.dataGrid1.SetDataBinding(ds, ds.Tables[1].TableName);
  }

 

相关文章: