当前位置:
文档之家› (仅供参考)c#下各种数据库操作的封装!
(仅供参考)c#下各种数据库操作的封装!
{ this.InitConn(strServer, strDataBase, strUser, strPwd);
}
public void Openll) { 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;
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)
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)(一)收藏
首先定义数据库操作的标准接口 IDBAccess,定义接口的基本功能;
通过基本的接口设置,完成数据访问的统一抽象。
public interface IDBAccess { void Init(string strServer, string strDataBase, string strUser, string str
}
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;
}
public void Close() { if (this.m_oConn != null && this.m_oConn.State == System.Data.
ConnectionState.Open) { this.m_oConn.Close();
} }
public bool TestConn() { bool bRet = true; try { if (this.m_oConn.State != System.Data.ConnectionState.Open) { this.m_oConn.Open();
}
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]);
} return iRet; }
public DataTable RunQuery(string strCmd) { DataTable dt = new DataTable(); DbDataAdapter adp = this.DbAdp; adp.SelectCommand = this.GetCmd(strCmd); adp.Fill(dt); return dt;
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;