8

我编写了一个可以很好地与 Sqlite 配合使用的 Windows 桌面应用程序。这是一个单用户应用程序,数据库位于运行应用程序的机器上。

但是,该应用程序已经发展壮大,现在多个用户应该能够运行该应用程序并连接到一个共享数据库。

我希望能够在网络驱动器上共享 sqlite 文件,但这显然会导致数据损坏,除非有人有任何想法。

我想我可能需要安装数据库服务器,但商业 MySQL 许可证没有意义,PostgreSQL 的不同之处足以让我不得不重写我的很多应用程序。我根本没有使用过 Firebird,所以我不确定这是否是一个好的解决方案。

是否可以安装任何 Sqlite 数据库服务器来处理 Sqlite 数据库文件上的传入事务?

如果我要求客户自己下载和安装 MySQL,我必须要有商业许可证吗?

任何建议或方向都会很棒,谢谢。

4

8 回答 8

8

您可以按照您的描述在共享网络驱动器上使用 Sqlite 文件,具体取决于底层文件系统:

http://www.sqlite.org/faq.html#q5

多个进程可以同时打开同一个数据库。多个进程可以同时执行 SELECT。但是,任何时候只有一个进程可以对数据库进行更改。

SQLite 使用读/写锁来控制对数据库的访问。(在不支持读/写锁的 Win95/98/ME 下,改为使用概率模拟。)但请注意:如果数据库文件保存在 NFS 文件系统上,此锁定机制可能无法正常工作。这是因为 fcntl() 文件锁定在许多 NFS 实现中被破坏。如果多个进程可能尝试同时访问该文件,则应避免将 SQLite 数据库文件放在 NFS 上。在 Windows 上,Microsoft 的文档说如果您没有运行 Share.exe 守护程序,锁定可能无法在 FAT 文件系统下工作。对 Windows 有很多经验的人告诉我,网络文件的文件锁定非常有问题,而且不可靠。如果他们说的是真的,

于 2009-12-06T19:32:41.057 回答
5

我认为Firebird可以是一个非常好的选择

  • 免费
  • 嵌入式版本存在
于 2009-12-06T20:13:49.360 回答
4

SQL Server Express怎么样,它是免费的,应该让你不必重写大部分代码,

于 2009-12-06T19:31:27.563 回答
3

有一些 sqlite 服务器可以在多用户环境中使用 sqlite。在这里阅读:http ://www.sqlite.org/cvstrac/wiki?p=SqliteNetwork 。我不知道这些解决方案如何执行和扩展。

于 2009-12-10T19:54:28.503 回答
2

我不知道为什么您认为如果将数据文件放在网络驱动器上并让您的应用程序的多个实例同时访问它,它就会损坏。如果你主要做阅读,你应该没问题。如果您进行大量写入,您可能会遭受性能损失,因为只有一个实例可以同时写入。(见http://www.sqlite.org/faq.html

如果你写了很多,你可能需要一个独立的服务器安装——你考虑过 MS SQL Server Express 吗?应该很容易启动和运行。

于 2009-12-06T19:31:37.440 回答
0

我知道为时已晚,但现在应该没有人需要在没有提供数据库抽象的框架的情况下编写应用程序。

我个人使用 Web2py,它是一个基于 python 的 Web 框架。默认情况下,它使用 SQLite,这非常适合本地桌面上的单用户应用程序或本地网络上主要是读取操作的中小型应用程序。但是,如果我决定增加应用程序的使用范围,我只需将数据库模式中的连接字符串更改为使用另一个数据库即可。Web2py 或任何其他值得使用的框架将简单地重写 SQL 语句以满足新的要求。

于 2012-11-15T13:30:33.907 回答
0

在多个用户可以在您的数据库中插入、删除、选择等之后,在您的连接字符串上使用此代码而不会出现问题。

SQLiteConnection con = new SQLiteConnection("Data Source=D:\yourdatabase.db;Count Changes=off;Journal Mode=off;Pooling=true;Cache Size=10000;Page Size=4096;Synchronous=off");

于 2017-06-28T09:08:06.197 回答
0

如果我要求客户自己下载和安装 MySQL,我必须要有商业许可证吗?

不。

MySQL 商业许可证的价值在于它允许您以二进制形式分发标准 MySQL 或修改后的 MySQL,而无需分发源代码。它还使您能够获得支持。

但是,如果用户自己从 Oracle 获得 MySQL,则 GPL 不要求您向他们提供 MySQL 源代码。他们可以从 Oracle 那里得到它。事实上,Oracle 有义务提供它,只要它们在 GPL 下分发。

于 2017-08-27T14:32:15.350 回答