在C#最后的一个加密解密的实例中,说到了DatabaseHelper,DatabaseHelper是一种能连接4中数据库的DatabaseHelper类,也就是说在连接数据库时,你的数据库可能是SQL Server,可能是OLEDB,该类提供了几种初始化重载方法,可以直接将连接字符串传入,或者通过web.config配置文件ConnectionString["connectionstring"],可以直接指明数据库类型,也可以不指明(该类可以自动分析)我们就需要这样一个中介可以连接不同的数据库——DatabaseHelper。下面是实战中DatabaseHelper的一段代码。
using System;
using System.Collections.Generic;
using System.Text;
using System.Data ;
using System.Configuration ;
using System.Data.Common ;
using System.Data.SqlClient;
using System.Data.Odbc;
using System.Data.OleDb;
using System.Data.OracleClient;
using System.IO;
namespace WebHelper.DB
{
public class DatabaseHelper:IDisposable
{
private string strConnectionString;
private DbConnection objConnection;
private DbCommand objCommand;//表示对数据源执行的SQL语句或存储过程
private DbProviderFactories objFactory = null;//用于创建类的一个或多个实例
private bool boolHandleErrors;
private string strLastError;
private bool boolLogError;
private string strLogFile;
//根据databasehelper初始化一个新类
public DatabaseHelper (string connectionstring,Providers.provider )
{
strConnectionString = connectionstring;//有参构造方法,在实例化类的时候可以指定数据库连接字符串
//这个类采用了简单工厂设计模式,case 判断的是 你传递的参数类型,这个参数从代码上看应该是枚举类型,即你可以选择你使用的是哪种数据库,共4种选择,当然必须选对(跟你要使用的数据库一致),不然会出错
switch (provider )
{
case Provider.SqlServer:
objFactory =SqlClientFactory.Instance ;
break ;
case Providers.OleDb:
objFactory =OleDbFactory.Instance ;
break ;
case Providers.Oracle:
objFactory =OracleClientFactory.Instance;
break ;
case Providers.ODBC:
objFactory =OdbcFactory .Instance ;
break ;
case Providers.ConfigDefined;
string providername=ConfigurationManager.ConnectionString["connectionstring"].ProviderName;
switch (providername )
{
case "System.Data.SqlClient":
objFactory =SqlClientFactory .Instance ;
break ;
case "System.Data.OleDb":
objFactory =OleDbFactory .Instance ;
break ;
case "System.Data.OracleClient":
objFactory =OracleClientFactory.Instance;
break ;