c#下各种数据库操作的封装!

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

c#下各种数据库操作的封装!(支持ACCESS,SQLSERVER,DB2,ORACLE, MYSQL)(一)收藏

首先定义数据库操作的标准接口IDBAccess,定义接口的基本功能;

通过基本的接口设置,完成数据访问的统一抽象。

public interface IDBAccess

{

void Init(string strServer, string strDataBase, string strUser, string str Pwd);

void Open();

void Close();

bool TestConn();

int RunNoQuery(string strCmd);

DataTable RunQuery(string strCmd);

DBType DBType { get;}

int GetFiledMax(string strTable, string strField);

DataTable Tables { get; }

DataTable GetColumns();

DataTable GetColumns(string strTable);

}

c#下各种数据库操作的封装!(支持ACCESS,SQLSERVER,DB2,ORACLE, MYSQL)(二)收藏

使用静态工厂模式,通过传入枚举型参数,动态创建访问实例

实现模式上采用基本实现接口,派生类继承基类的虚函数,从而实现代码的耦合较低,有很好的扩展性。

public enum DBType

{

Access,

SQL,

DB2,

Oracle,

MySQL

}

public static class DBAccessFactory

{

public static IDBAccess Create(DBType type)

{

IDBAccess IRet = null;

switch (type)

{

case DBType.Access:

IRet = new Access(type);

break;

case DBType.SQL:

IRet = new SQL(type);

break;

default:

break;

}

return IRet;

}

private abstract class DBAccess : IDBAccess

{

protected DbConnection m_oConn = null;

protected const string CON_strServer = "Server";

protected const string CON_strDataBase = "Data Source";

protected const string CON_strUser = "UID";

protected const string CON_strPwd = "PWD";

protected const string CON_strConnTimeOut = "Connect Timeou t = 2";

private DBType m_eDBType = DBType.Access;

protected DBAccess(DBType type)

{

this.m_eDBType = type;

}

public DBType DBType

{

get { return this.m_eDBType; }

}

public void Init(string strServer, string strDataBase, string strUse r, string strPwd)

{

this.InitConn(strServer, strDataBase, strUser, strPwd);

}

public void Open()

{

if (this.m_oConn != null)

{

this.m_oConn.Open();

}

public int RunNoQuery(string strCmd)

{

int iRet = 0;

try

{

DbCommand oCmd = this.GetCmd(strCmd);

if (oCmd != null)

{

iRet = oCmd.ExecuteNonQuery();

}

}

catch (Exception ex)

{

throw (new Exception(ex.Message));

}

return iRet;

}

public int GetFiledMax(string strTable, string strField)

{

int iRet = -1;

DataTable dt = this.RunQuery("Select Max(" + strField + ") Fro m " + strTable);

if (dt != null && dt.Rows.Count == 1)

{

iRet = dt.Rows[0][0] is DBNull ? 0 : Convert.ToInt32(dt.Rows [0][0]);

相关文档
最新文档