【问题标题】:How to create multi database support software?如何创建多数据库支持软件?
【发布时间】:2014-05-18 15:27:57
【问题描述】:

我正在为零售商店创建一个软件,我希望我的软件支持 SQL Server 和 SQLite。如果用户是独立的(一台 PC),则选择 sqlite 数据库,如果是通过网络,则选择 SQL Server 选项。

我正在用 Visual Studio 2010 和 vb.net 语言开发这个软件。

作为研究,我们在 Visual Studio、ODBC、OleDB 和 MSSQL 中有三种类型的连接。

OLEDB 可以支持 MS-Access 数据库和 SQL Server。

非常感谢任何评论和想法。

【问题讨论】:

  • 使用像 Nhibernate 这样的 ORM 来抽象数据库层怎么样?

标签: sql sql-server vb.net sqlite


【解决方案1】:

编写应用程序的最佳方法是将功能抽象为different tiers 或layers。这可能意味着很多事情并且可能变得相当复杂,但总体思路是保持应用程序的各个部分分开。假设您的程序中有一个库存表格,您可以在其中查找当前库存。显示库存的表单不需要知道您的客户正在运行什么数据库。一般来说,你最好不知道。同样,访问相应数据库(无论是 SQL Server、SQLite 还是 Access)的代码实际上并不需要知道您的 Inventory 表单将如何处理它正在检索的数据。您的所有库存代码应该做的是以对您的客户最有用的方式显示您的库存,而您的所有数据编码应该做的是获取请求的数据。

在您的情况下,我可能会采取的方法是创建一个数据提供者类。在该类中,您可以封装您可能拥有的不同数据库功能以及客户可能拥有的不同数据库系统的逻辑。例如,一位店主刚刚收到了一批产品,需要在其商店的库存中添加一个产品。理想情况下,您的程序应该能够执行像DataProvider.AddInventory() 这样的调用。在 DataProvider 类中,您将编写代码来跟踪客户正在使用的数据库解决方案以及您希望支持的每个数据库解决方案的逻辑实现。理想情况下,您应该实现您的应用程序可能需要执行的每个数据函数,以便可以像AddInventory() 示例一样非常简单地调用它。

数据提供者的实现可以根据您的喜好简单或复杂。在某些情况下,您将在多个不同平台上使用多种不同语言编写的多个应用程序从多个位置访问您的数据源,编写某种中间件可能是有意义的。在您的情况下,这听起来像是将驻留在“内部”的应用程序类型,并且应该通过将数据访问抽象到单独的类来很好地提供服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多