如何在C#中创建一个支持OleDb和SqlConnection的抽象数据库访问类DataAccess,并实现不同数据库连接的动态切换?
时间: 2024-11-08 08:16:50 浏览: 22
在开发C#应用程序时,经常需要与多种数据库进行交互。为了提高代码的可重用性和可维护性,创建一个抽象的数据库访问类是十分必要的。下面我将详细说明如何设计一个名为`DataAccess`的抽象类,它将支持通过OleDb和SqlConnection连接到不同的数据库,如本地Jet数据库和SQL Server。
参考资源链接:[C#多类型数据库连接示例:OleDb与SqlConnection](https://wenku.csdn.net/doc/7tvos5bdw2?spm=1055.2569.3001.10343)
首先,我们定义一个抽象基类`DataAccess`,它继承自`MarshalByRefObject`,这样可以让数据访问对象在不同的应用程序域之间共享。抽象类中包含一个受保护的数据库连接对象和一个用于存储连接字符串的字符串变量:
```csharp
public abstract class DataAccess : MarshalByRefObject
{
***mon.DbConnection connection;
protected string cnnstr = string.Empty;
public abstract void OpenConnection();
public abstract void CloseConnection();
public abstract void ExecuteNonQuery(string sql);
// 其他数据库操作方法...
}
```
接下来,我们创建两个具体类`OleAccess`和`SqlClientAccess`继承自`DataAccess`。这些类将实现具体的数据库连接和操作方法:
```csharp
public class OleAccess : DataAccess
{
public override void OpenConnection()
{
if (string.IsNullOrEmpty(cnnstr))
throw new InvalidOperationException(
参考资源链接:[C#多类型数据库连接示例:OleDb与SqlConnection](https://wenku.csdn.net/doc/7tvos5bdw2?spm=1055.2569.3001.10343)
阅读全文