我属于新手吧,没写过几行代码,有了点想法希望得到高手的指点
我想写一个数据库操作类,可以自动判断所用的数据库,
就是在外部完全不涉及到用哪个数据库的问题,现在只是想法
还没具体写。我看过一点数据工厂,里面的东西没太理解吧。
我现在卡在:如果一个页面用 DB.的方式用的很多,就好像
在一个页面声明了多个DB的实例了吧?这样似乎不太合理吧?
我的想法用代码简单表示如下:
public partial class _Default : System.Web.UI.Page
{//这里可以完全不知道用的是什么数据库!!
DbDataReader dr = DB.GetInstance().getDataReader()
DB.GetInstance().execute("SELECTE * FROM tb_table");
}
public class DB
{
public static GetInstance()
{根据所用数据库,返回不同类的实例
(比如访问Access的类或者是访问SqlServer的类)}
..............................
}
public class SqlDataBase()
{//访问SQL数据库的类
public static int execute(string strSql)
{}
public static SqlDataReader getDataReader()
{}
.....................
}
public class AccessDataBase()
{//访问aceess数据库的类
public static int execute(string strSql)
{}
public static OledbDataReader getDataReader()
{}
..........................
}
你上面的方法可以解决,不过我觉得很笨...
我给发一个如何根据需要加载不同的数据库的代码。
public class CreateFcatory
{
//这句是读取配置文件... DAL(key值). Value值可以是任何数据库操作的数据访问层的名称
static string path = ConfigurationManager.AppSettings["DAL"].ToString();
//这句是根据加载的程序集名称发回 程序集实现的接口
public static IAccessoryFileService CreateAccessoryFileService()
{
//加载程序集... 这地方不懂你就去MSDN上看下
return (IAccessoryFileService)Assembly.Load(path).CreateInstance(path + ".AccessoryFileService");
}
}
上面的方法,可以完全解决不同的数据库操作
enterprise library源码是很好的参考资料