龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

使用设计模式构建通用数据库访问类(3)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
inTransaction=true; } public override void CommitTrans() { trans.Commit(); inTransaction=false; } public override void RollbackTrans() { trans.Rollback(); inTransaction=false; } public override void e
   inTransaction=true;
}
public override void CommitTrans()
{
  trans.Commit();
  inTransaction=false;
}
public override void RollbackTrans()
{
  trans.Rollback();
  inTransaction=false;
}
public override void exeSql(string strSql,string[] strParams,object[] strValues)
{
OleDbCommand cmd=new OleDbCommand();
  cmd.Connection=this.conn ;
if(inTransaction)
  cmd.Transaction=trans;
if((strParams!=null)&&(strParams.Length!=strValues.Length) )
throw new ParamValueNotMatchException("查询参数和值不对应!");
cmd.CommandText=this.ChangeQueryString(strSql);
if(strParams!=null)
{
for(int i=0;i cmd.Parameters.Add(strParams[i],strValues[i]);
}
  cmd.ExecuteNonQuery();
}
public override DataSet exeSqlForDataSet(string QueryString)
{
  OleDbCommand cmd=new OleDbCommand();
cmd.Connection=this.conn ;
  if(inTransaction)
    cmd.Transaction=trans;
  DataSet ds = new DataSet();
  OleDbDataAdapter ad = new OleDbDataAdapter();
cmd.CommandText=QueryString;
  ad.SelectCommand =cmd;
  ad.Fill(ds);
  return ds;
  }
}
  现在我们已经完成了所要的功能,下面,我们需要创建一个Factory类,来实现自动数据库切换的管理。这个类很简单,主要的功能就是根据数据库连接字符串,判断使用什么数据库,然后,返回适当的数据库操纵类。在这里,判断的方法很简单,只是根据两种数据库连接字符串的不同来判断。在实际中,随着数据库类的增加,判断的方法可能会有所变化,读者应当根据自己的实际情况来做相应的调整。

public class DBOperatorFactory
{
public static DBOperator GetDBOperator(string strConnection)
{
  if(strConnection.IndexOf("provider=")<0) //SqlServer
{
  return new SqlDBOperator(strConnection);
}
  else //other database
{
  return new OleDBOperator(strConnection);
}
}
}

精彩图集

赞助商链接