关于可移植数据访问层问题 ?
各位高手,我正在研究一个通用的数据库访问,可是遇到一个急手的问题,我想写一个通用的返回datareader对象的方法,可不知道datareader类用的是什么接口(如,sqlconnection、oledbconnection、oracleconnection用的是idbconnection接口),请各位高手指点。代码:
DBFactory.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Data.OleDb;
//using System.Data.OracleClient;
namespace pro
{
/// <summary>
/// 移植到的数据库名称集
/// </summary>
public enum DataBaseType
{//申明一个枚举类型的,枚举参数为我们可能会移植到的数据库名称集
Acess,
SqlServer,
Oracle
}
/// <summary>
/// DBFactory 的摘要说明
/// </summary>
public class DBFactory
{
public DBFactory()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 创建并初始化Connection连接实例
/// </summary>
/// <param name="strconn">数据库连接字符串名 </param>
/// <param name="dbType">数据提供程序类型 </param>
/// <returns>返回一个已经创建好的数据库连接实例 </returns>
protected static IDbConnection CreateConnection(string strconn,DataBaseType dbType)
{
IDbConnection conn;
switch (dbType)
{
case DataBaseType.Acess:
conn = new OleDbConnection(ConfigurationManager.ConnectionStrings[strconn].ConnectionString);
break;
//case DataBaseType.Oracle:
// conn = new OracleConnection(ConfigurationManager.ConnectionStrings[strconn].ConnectionString);
// break;
default :
conn = new SqlConnection(ConfigurationManager.ConnectionStrings[strconn].ConnectionString);
break;
}
return conn;
}
/// <summary>
/// 创建并初始化Command实例
/// </summary>
/// <param name="QueryString">Sql查询语句或存储过程名称 </param>
/// <param name="conn">数据库连接实例 </param>
/// <param name="dbType">数据提供程序类型 </param>
/// <returns>返回一个已经创建好的Command实例对象 </returns>
protected static IDbCommand CreateCommand(string QueryString, IDbConnection conn,DataBaseType dbType)
{
IDbCommand cmd;
switch (dbType)
{
case DataBaseType.Acess:
cmd = new OleDbCommand(QueryString, (OleDbConnection)conn);
break;
//case DataBaseType.Oracle:
// cmd = new OracleCommand(QueryString, (OracleConnection)conn);
// break;
default :
cmd = new SqlCommand(QueryString,(SqlConnection)conn);
break;
}
return cmd;
}
/// <summary>
/// 创建并初始化一个DataAdapter对象
/// </summary>
/// <param name="cmd">Command实例对象 </param>
/// <param name="dbTpye">数据提供程序类型 </param>
/// <returns>返回一个已经创建好的DataAdapter对象s </returns>
protected static IDbDataAdapter CreateDataAdapter(IDbCommand cmd, DataBaseType dbTpye)
{
IDbDataAdapter ida;
switch (dbTpye)
{
case DataBaseType.Acess:
ida = new OleDbDataAdapter((OleDbCommand)cmd);
break;
//case DataBaseType.Oracle:
// ida = new OracleDataAdapter((OracleCommand)cmd);
// break;
default :
ida = new SqlDataAdapter((SqlCommand)cmd);
break;
}
return ida;
}
}
}
--------------------编程问答-------------------- 关于可移植数据访问层问题(二)url:http://topic.csdn.net/u/20080512/21/ee13d662-eaef-4cb0-847c-4ba2f85af3f5.html --------------------编程问答--------------------
楼上有问题,正确的url:http://topic.csdn.net/u/20080512/21/7c28db7d-21a8-4e13-b452-e2b014c易做图2.html
补充:.NET技术 , C#