首页 新闻 会员 周边

有经验的高手帮我看看我的想法能否实现

0
悬赏园豆:10 [已解决问题] 解决于 2010-09-18 17:44

 我属于新手吧,没写过几行代码,有了点想法希望得到高手的指点

 我想写一个数据库操作类,可以自动判断所用的数据库,
就是在外部完全不涉及到用哪个数据库的问题,现在只是想法
还没具体写。我看过一点数据工厂,里面的东西没太理解吧。

  我现在卡在:如果一个页面用 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()
 {}
..........................
}

钢的锅的主页 钢的锅 | 初学一级 | 园豆:10
提问于:2010-09-10 23:47
< >
分享
最佳答案
0

你上面的方法可以解决,不过我觉得很笨...

  我给发一个如何根据需要加载不同的数据库的代码。

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");
        }

}

 

上面的方法,可以完全解决不同的数据库操作

收获园豆:10
迷失的背影 | 初学一级 |园豆:97 | 2010-09-11 09:35
其他回答(1)
0

enterprise library源码是很好的参考资料

_A_A | 园豆:1139 (小虾三级) | 2010-09-11 23:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册