【问题标题】:Creating Simple desktop database application创建简单的桌面数据库应用程序
【发布时间】:2010-05-31 12:32:11
【问题描述】:

我来这里是为了编写一个小型数据库应用程序,它将在桌面(离线模式)中运行。

我使用 MSAccess 2007 作为我的数据库文件并尝试在 vb.net 中编写代码。

我曾经编写过 vb6 代码,通常有全局变量来存储数据库连接并执行每个查询。

我正在尝试将自己从 vb6 升级到 vb.net。

我还需要阅读一些更简单的入门书籍吗?

【问题讨论】:

    标签: vb.net ms-access vb6 database-connection


    【解决方案1】:

    在 .NET 中,与数据库的对话是由 ADO.NET 处理的,它使用一种称为“连接池”的东西。连接池基本上是 ADO.NET 为您管理的与您的数据库的打开连接的集合。在您的代码中,当您创建并打开一个 Connection 对象时,ADO.NET 首先在连接池中查看它是否已经与您的数据源建立了一个打开的连接,如果找到它就使用它(而不是实际创建和打开一个新的连接)。当您关闭连接时,ADO.NET 并没有真正关闭它,而是将其返回到连接池。

    因此,您不需要(实际上也不想)在应用程序内部(在全局变量或任何地方)维护开放的连接对象。在 ADO.NET 中进行数据访问的正确方法是创建并打开一个 Connection 对象,对数据库执行任何您需要执行的操作,然后关闭并释放您的 Connection。

    【讨论】:

    • 所以访问和sql的连接对象是一样的
    • 是的,无论您使用哪种数据库(只要您使用 ADO.NET),连接池都适用,因此基本方法应该始终相同:创建和打开在您需要使用它之前立即创建一个 Connection 对象,然后在您完成后立即关闭并处置该对象。您不应将 Connection 对象存储在全局(甚至是类级别)变量中,并且绝对不应将其存储在 Open 状态。
    • 可以有一些理由吗?
    • 你的意思是:“为什么 ADO.NET 使用连接池?”
    • 不...为什么我们不应该将连接对象存储在全局变量中
    【解决方案2】:

    将连接字符串存储在配置文件中(在解决方案资源管理器中,打开My Project 文件夹并双击Settings.settings)。

    我建议您创建一个或多个类来包含您的数据库代码,并让这些类在数据库数据和您的应用程序对象之间进行转换,我看到的大多数 VB6 项目都有 GUI 硬链接到数据库,这可以使未来维护或新功能非常困难,并且限制了代码重用的可能性。

    如果您有 VB6 经验,我认为您可能会立即开始尝试创建应用程序,但您绝对应该同时阅读一本好书或有关它的好文章,以便您掌握东西像这样,您需要在用户等之后 Dispose 您的数据库对象。

    【讨论】:

    • 是否允许我在创建连接之前更改数据库服务器名和其他参数。 IE。如果我想传递服务器名、用户名、密码等是否可能?
    • 您对 VB6 应用程序代码重用可能性有限的评论似乎是老笑话的变种:“这里的食物太糟糕了!” “是的,还有这么小的部分!”
    • 我不想重用代码,但我想在多个设置中使用相同的代码
    • @KoolKabin - 您可以在配置文件中存储多个连接字符串,或者如果您愿意,您可以只存储一个带有占位符的连接字符串,而不是您想要在运行时更改的值的实际值,并且然后用正确的值做一个String.Replace
    【解决方案3】:

    买一本书可能是个好主意,自 VB6 以来发生了很多变化。

    还可以考虑使用更强大的数据库,例如 SQL compact 或 SQLite。它将允许您使用实体框架,这将使您的应用程序的编写变得更加容易。

    【讨论】:

    • 对于单用户桌面应用程序,SQL Server CE 和 SQLite 在哪些方面比 Jet/ACE“更强大”?
    • 也许较新版本的 Access 更好,但根据我的经验(2000-2003 年),一旦行数开始增加(说 10-100 数千),我们就会遇到问题。我们已经将 SQLite 用于一些非常大的表(接近演出)而没有问题。对于桌面应用程序来说,这可能不是问题。对我来说最大的胜利是使用 EF 和 LINQ。如果有办法通过 Access 做到这一点,那就太棒了。
    • 我不知道 EF 和 LINQ 是什么,也许提问的人不需要它们?至于成千上万条记录的 10s/100s 问题,我自己从未见过。我有一个应用程序,我想升级到 SQL Server,它使用了 5 年,在 3 个主表中的 2 个表中有超过 300K 的记录,在第三个表中超过 600K,同时有 10-15 个用户,并且可靠性或性能没有问题.当然,我知道我在设计一个高效的多用户 Access 应用程序方面正在做什么,这并不是 Access 中的默认设置所建议的(尽管并不难)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多