整个例子的完整代码如下,VS2008下编译测试通过,本人已通过它实现N个项目,欢迎大家评测,谢谢指教

publicenum DBType
...{
       Access,
       SQL,
       DB2,
       Oracle,
       MySQL
   }

publicinterface IDBAccess
...{
void Init(string strServer, string strDataBase, string strUser, string strPwd);
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);
   }

publicstaticclass DBAccessFactory
...{
publicstatic 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;
       }

privateabstractclass DBAccess : IDBAccess
...{
protected DbConnection m_oConn = null;
protectedconststring CON_strServer = "Server";
protectedconststring CON_strDataBase = "Data Source";
protectedconststring CON_strUser = "UID";
protectedconststring CON_strPwd = "PWD";
protectedconststring CON_strConnTimeOut = "Connect Timeout = 2";
private DBType m_eDBType = DBType.Access;

protected DBAccess(DBType type)
...{
this.m_eDBType = type;
           }

public DBType DBType
...{
get...{ returnthis.m_eDBType; }
           }

publicvoid Init(string strServer, string strDataBase, string strUser, string strPwd)
...{
this.InitConn(strServer, strDataBase, strUser, strPwd);
           }

publicvoid Open()
...{
if (this.m_oConn != null)
...{
this.m_oConn.Open();
               }
           }

publicint 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;
           }

publicint GetFiledMax(string strTable, string strField)
...{
int iRet = -1;
               DataTable dt = this.RunQuery("Select Max(" + strField + ") From " + 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;
           }

publicvoid Close()
...{
if (this.m_oConn != null && this.m_oConn.State == System.Data.ConnectionState.Open)
...{
this.m_oConn.Close();
               }
           }

publicbool TestConn()
...{
bool bRet = true;
try
...{
if (this.m_oConn.State != System.Data.ConnectionState.Open)
...{
this.m_oConn.Open();
                   }
                   bRet = this.m_oConn.State == System.Data.ConnectionState.Open;
               }
catch
...{
                   bRet = false;
               }
this.Close();
return bRet;
           }

publicabstract DataTable Tables ...{ get; }
publicabstract DataTable GetColumns();
publicabstract DataTable GetColumns(string strTable);

protectedabstractvoid InitConn(string strServer, string strDataBase, string strUser, string strPwd);
protectedabstract DbCommand GetCmd(string strCmd);
protectedabstract DbDataAdapter DbAdp ...{ get;}
       }

Access, SQL#region Access, SQL

privateclass Access : DBAccess
...{
public Access(DBType type)
               : base(type)
...{
           }

protectedoverridevoid InitConn(string strServer, string strDataBase, string strUser, string strPwd)
...{
string strConn = "Provider = ";
switch (strDataBase.Substring(strDataBase.LastIndexOf('.') + 1).ToLower())
...{
case "mdb":     // 2000, 2003
                       strConn += "Microsoft.Jet.OleDb.4.0;";
break;

case "accdb":   // 2007
                       strConn += "Microsoft.ACE.OLEDB.12.0;";
break;

default:
throw (new Exception("Unknown Access Version."));
//break;
               }
               strConn += CON_strDataBase + " = " + strDataBase;
//strConn += CON_strUser + " = " + strUser;
               //strConn += CON_strPwd + " = " + strPwd;
base.m_oConn = new OleDbConnection(strConn);
           }

protectedoverride DbCommand GetCmd(string strCmd)
...{
returnnew OleDbCommand(strCmd, (OleDbConnection)base.m_oConn);
           }

protectedoverride DbDataAdapter DbAdp
...{
get...{ returnnew OleDbDataAdapter(); }
           }

publicoverride DataTable Tables
...{
get
...{
return ((OleDbConnection)base.m_oConn).GetOleDbSchemaTable(OleDbSchemaGuid.Tables, newobject[] ...{ null, null, null, "Table" });
               }
           }

publicoverride DataTable GetColumns()
...{
               DataTable dt = new DataTable();
foreach (DataRow row inthis.Tables.Rows)
...{
                   dt.Merge(this.GetColumns(row["TABLE_NAME"].ToString()));
               }
return dt;
           }

publicoverride DataTable GetColumns(string strTable)
...{
return ((OleDbConnection)base.m_oConn).GetOleDbSchemaTable(OleDbSchemaGuid.Columns, newobject[] ...{ null, null, strTable, null });
           }
       }

privateclass SQL : DBAccess
...{
public SQL(DBType type)
               : base(type)
...{
           }

protectedoverridevoid InitConn(string strServer, string strDataBase, string strUser, string strPwd)
...{
string strConn = CON_strServer + " = " + strServer + ";";
               strConn += CON_strDataBase + " = " + strDataBase + ";";
               strConn += CON_strUser + " = " + strUser + ";";
               strConn += CON_strPwd + " = " + strPwd + ";";
               strConn += CON_strConnTimeOut;
base.m_oConn = new SqlConnection(strConn);
           }

protectedoverride DbCommand GetCmd(string strCmd)
...{
returnnew SqlCommand(strCmd, (SqlConnection)base.m_oConn);
           }

protectedoverride DbDataAdapter DbAdp
...{
get...{ returnnew SqlDataAdapter(); }
           }

publicoverride DataTable Tables
...{
get...{ return ((SqlConnection)base.m_oConn).GetSchema("Tables", null); }
           }

publicoverride DataTable GetColumns()
...{
return ((SqlConnection)base.m_oConn).GetSchema("Columns", null);
           }

publicoverride DataTable GetColumns(string strTable)
...{
return ((SqlConnection)base.m_oConn).GetSchema("Columns", newstring[] ...{ null, null, strTable, null });
           }
       }

#endregion
   }

转载于:https://blog.51cto.com/ciscoxia/1216325

c#下各种数据库操作的封装!(支持ACCESS,SQLSERVER,DB2,ORACLE,MYSQL)(四)相关推荐

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

    使用静态工厂模式,通过传入枚举型参数,动态创建访问实例 实现模式上采用基本实现接口,派生类继承基类的虚函数,从而实现代码的耦合较低,有很好的扩展性. publicenum DBType ...{   ...

  2. PHP中对数据库操作的封装

    在动态网面设计中很多都要涉及到对数据库的操作,但是有时跟据需要而改用其它后台数据库,就需要大量修改程序.这是一件枯燥.费时而且容易出错的功作.其实我们可以用PHP中的类来实现对数据库操作的封装,从而使 ...

  3. php封装的数据库操作文件夹,PHP中对数据库操作的封装_php

    现在我们把其封装在dbfz.inc中,其设计如下: $#@60;? class dbInterface{ var $dbID=1; //用于确定当前操作的数据库,当dbID为1代表mysql,当为 2 ...

  4. 小博老师解析Java核心技术 ——JDBC数据库操作类封装

    2019独角兽企业重金招聘Python工程师标准>>> [引言] 我们在学习Java编程时,连接数据库技术(JDBC)是一项必备技能,我们经常需要读取或操作持久性存储的结构化数据.那 ...

  5. mysql在cmd命令下执行数据库操作

    2019独角兽企业重金招聘Python工程师标准>>> windows+r 运行cmd命令,执行以下操作! 当mysql 数据库文件相对于来说比较大的时候,这个时候你可能在正常环境下 ...

  6. Qt下Sqlite数据库操作

    Sqlite数据库作为Qt项目开发中经常使用的一个轻量级的数据库,可以说是兼容性相对比较好的数据库之一(Sqlite就像Qt的亲儿子,如同微软兼容Access数据库一样).关于Sqlite和Qt的千丝 ...

  7. Python3 数据库操作小封装

    import pymysql'''SQLController:对数据库操作私有:__sql_connect(self):作用:建立数据库连接 返回:数据库连接对象__sql_insert_info(s ...

  8. python封装数据库操作_Python3 数据库操作小封装

    import pymysql ''' SQLController:对数据库操作 私有: __sql_connect(self): 作用:建立数据库连接 返回:数据库连接对象 __sql_insert_ ...

  9. db2 mysql oracle,五大主流数据库比较 DB2 Oracle MySQL SyBase SQLServer)

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 一,开放? 1.SQL Server? 它只能在没有丝毫开放性的Windows上运行.操作系统的稳定性对数据库非常重 ...

最新文章

  1. java 中遍历目录下所有文件
  2. 存图matlab,matlab中保存图片的方法
  3. DELPHI 通過窗口句柄或窗口标题得到进程句柄
  4. 高级C语言教程编码风格
  5. 【Manacher】【贪心】字符串连接(金牌导航 Manacher-4)
  6. CSDN编程挑战(交换字符)
  7. python时间转绝对秒数_python时间时分秒与秒数的互相转换
  8. SQL Server 2014中的混合云和Hekaton功能
  9. 华为acl怎么生效_华为ACL配置教程
  10. idea社区版使用maven运行web项目
  11. eplan 电箱布局_Eplan 的从头到尾完成3D布局步骤说明
  12. 行政区域村级划分数据库_最新行政区划省市区街道乡镇数据库 每月更新版
  13. JavaEE中的依赖性——依赖性注入
  14. python爬虫-20行代码爬取王者荣耀所有英雄图片,小白也轻轻松松
  15. 行通信比并行通信的速度更高
  16. rk3568安卓11系统之开发环境搭建
  17. 到底Redis是什么?
  18. 【Pandas】Pandas数据分类
  19. Happy 2004(代码+积性函数扩展)
  20. 清除网页缓存HTML方法

热门文章

  1. DALL·E才发布两天就被复现?官方论文还没出,大神们就在自制代码和视频了
  2. 柔宇冲刺科创板IPO:3年营收5亿净亏31亿,乐视掘墓人刘姝威坐镇董事会
  3. 不能打游戏的汽车不是好电影院!特斯拉面向国内推送V10.0系统,能辅助变道还能看爱奇艺...
  4. 网红送餐无人车被指用人冒充AI始末:没有人工,就没有智能
  5. 裴健当选加拿大皇家学会院士:曾任华为首席科学家、京东副总裁,学术引用超8万次...
  6. mac电脑 显示隐藏文件 取消显示隐藏文件
  7. linux 自学系列:wc命令
  8. 架构师之路 — 部署架构 — 高可用集群 — 主备 HA 系统中的脑裂问题
  9. C 语言编程 — uint8_t / uint16_t / uint32_t /uint64_t
  10. 配置nginx下别名alias支持PHP fastcgi解析