SqlDBOperate oper = new SqlDBOperate(“…”);
String sql = “…”;
oper. ExecuteNonQuery(sql);
DataTable dt = oper.ExecuteDataTable(sql);
3.数据库操作类的实现
各种数据库操作类的实现比较简单,SqlDBOperate,OracleDBOperate等类的代码不超过30行(当然更多代码放到了基类中),下面是具体操作类的代码:
SqlDBOperate:
using System;
using System.Data.SqlClient;适配器字符串是什么
using System.Data;
namespace DOTNET.Common.Database
{
internal class SqlDBOperate : DBOperate
{
//在构造方法中创建数据库连接
public SqlDBOperate(string strConnection)
{
< = new SqlConnection(strConnection);
}
//创建适配器
protected override DbDataAdapter CreateDataAdapter(string sql) {
return new SqlDataAdapter(sql, (SqlConnection)conn);
}
}
}
OracleDBOperate:
using System;
using System.Data;
using System.Data.OracleClient;
namespace DOTNET.Common.Database
{
public class OracleDBOperate : DBOperate
{
public OracleDBOperate(string strConnection)
{
//在构造方法中创建数据库连接
< = new OracleConnection(strConnection);
}
//创建适配器
protected override DbDataAdapter CreateDataAdapter(string sql) {
return new OracleDataAdapter(sql, (OracleConnection)conn);
}
}
}
OleDBOperate:
using System;
using System.Data.OleDb;
using System.Data;
namespace DOTNET.Common.Database
{
internal class OleDBOperate : DBOperate
{
//在构造方法中创建数据库连接
public OleDBOperate(string strConnection)
{
< = new OleDbConnection(strConnection);
}
//创建适配器
protected override DbDataAdapter CreateDataAdapter(string sql) {
return new OleDbDataAdapter(sql, (OleDbConnection)conn);
}
}
}
ODBCDBOperate:
using System;
using System.Data.Odbc;
using System.Data;
namespace DOTNET.Common.Database
{
internal class ODBCDBOperate : DBOperate
{
//在构造方法中创建数据库连接
public ODBCDBOperate(string strConnection)
{
< = new OdbcConnection(strConnection);
}
//创建适配器
protected override DbDataAdapter CreateDataAdapter(string sql) {
return new OdbcDataAdapter(sql, (OdbcConnection)conn);
}
}
}
其实,在这些数据库操作类中,所完成的仅仅只有在构造函数中创建数据库连接和提供合适的适配器方法而已,其它更多的方法在基类中提供。这样,当我们需要扩展一种新的数据库操作类型时,非常简单,只需要类似上面的10行代码而已。
那么基类都提供哪些功能呢?首先看基类是什么样子。
4.数据库操作基类的实现
数据库操作基类有些大,有195行代码,程序行总数为385行,在代码后面我会讲解该类,其实该类不是很麻烦:
DBOpe rate:
///<copyright>天志(六子) 1999-2007</copyright>
///<version>1.0</version>
///<author>天志</author>
/
//<email></email>
///<log date="2007-04-05">创建</log>
using System;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Data;
using System.Data.Common;
namespace DOTNET.Common.Database
{
///<summary>
///数据库操作抽象类。
/
//</summary>
///<author>天志</author>
///<log date="2007-04-05">创建</log>
public abstract class DBOperate
{
///<summary>
///数据库连接对象。
///</summary>
///<author>天志</author>
///<log date="2007-04-05">创建</log>
protected DbConnection conn;
/
//<summary>
///事务处理对象。
///</summary>
///<author>天志</author>
///<log date="2007-04-05">创建</log>
private DbTransaction trans;
///<summary>
///指示当前操作是否在事务中。
///</summary>
///<author>天志</author>
///<log date="2007-04-05">创建</log>
private bool bInTrans = false;
#region打开关闭数据库连接
///<summary>
///打开数据库连接
///</summary>
///<author>天志</author>
///<log date="2007-04-05">创建</log>
private void Open()
{
if (conn.State.Equals(ConnectionState.Closed))
{
conn.Open();
}
}
///<summary>
///关闭数据库连接
///</summary>
///<author>天志</author>
///<log date="2007-04-05">创建</log>
public void Close()
{
if (conn.State.Equals(ConnectionState.Open)) { conn.Close(); } }
#endregion
#region事务支持
///<summary>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。