我正在开发的ASP.NET Web应用程序需要支持两种不同类型的数据库,即Access和MS SQL Server 2008 Express。
我已经在web.config中为每种数据库类型存储了连接字符串,并且我还有另一个web.config值,该值指定要使用哪种数据库类型。所以我可以得到正确的连接字符串没有问题。
最大的问题是数据库对象。对于已经实现的access,我使用代码中的对象oledbconnection、oledbcommand和oledbdatareader进行数据库调用。
似乎对于sql server,我不能使用这些对象,而是需要使用对象sqlconnection、sqlcommand和sqldatareader来执行基本相同的操作。
我希望尽可能多地重用当前代码,而不必为每个数据库类型创建两个单独的块。(我有很多方法将OLEDBDataReader作为参数—例如,我不希望每个方法都有两个。)
我注意到连接对象都继承自dbconnection。数据读取器(dbdatareader)和命令(dbcommand)也是如此。
是否可以将我现有的代码用于访问,用DB对象替换所有OLE对象,然后根据当前数据库类型将这些对象转换为适当的类型?
在一个asp.net应用程序中支持两种数据库类型有什么最佳实践吗?
如果可以的话,我可以添加一些代码。谢谢。

最佳答案

是的,从framework 2.0中,所有数据读取器都继承自DbDataReader类,因此您的方法可以采用DbDataReaderisntead的OleDbDataReader,并且您可以将这些方法用于任何数据库。
但是,这些数据库有不同的sql方言,因此您要么必须保持在所有使用的数据库中工作的特性的狭窄路径上,要么对某些任务有单独的查询。
区别的一个具体例子是,access使用#2010-09-24#之类的数据文本,而sql server使用'2010-09-24'之类的日期文本。一般来说,大多数与日期有关的都是不同的。

关于asp.net - ASP.NET:如何在一个应用程序中支持两种数据库类型? ( Access ,MS SQL Server 2008 Express),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3782864/

10-17 02:28