通过网络流访问sqlite数据库

时间:2012-04-14 14:36:26

标签: c# database sqlite networking

我想知道是否有办法将网络流视为文件。我可能错了,但我将文件视为字节数组列表。当你在Windows中打开一个文件并写入它时,你会将字节插入该文件(数组列表)。

我正在创建一个程序,我用SQLite数据库部署它。我也在创建客户端版本,它连接到网络上的数据库文件。

为了让用户连接到数据库文件,他们需要提供凭据才能访问该数据库中的数据。 我希望他们能够连接而无需输入该信息。

我一直在想的事情:

  • 使用sql server部署我的应用程序。 (使用SQL服务器部署应用程序并不容易,它会静默安装服务器,启用tcp连接以及所有必要的配置来实现这一点。此外,安装sqlite需要不到20秒的时间大约需要7分钟!

  • 我正在使用WCF与服务器通信,因此我可以为我计划使用的所有查询创建一个函数。因此,如果我想从产品中选择*,我可以在WCF服务上调用方法SelectAllFromProducts()...(这里我有点重新发明轮子。)另外,关于这个的好处是我的查询会很多我相信的更快。 Sqlite是无服务器的,所以如果你计划在产品中查找产品名称就像'foo'的所有项目,那么如果你考虑它,计算机将必须通过网络访问数据库中的所有记录。如果本地计算机执行此操作并将少量结果发送到客户端,则会更快。

1 个答案:

答案 0 :(得分:1)

我认为通过网络使用Sqlite不是一个好主意。我目前正在使用Sqlite但作为本地文件系统数据库。

在客户端服务器架构中,您最好使用一些RDBMS而不是SQLite

  

客户端/服务器应用程序

     

如果您有许多客户端程序通过a访问公共数据库   在网络中,您应该考虑使用客户端/服务器数据库引擎   而不是SQLite。 SQLite将在网络文件系统上运行,但是   由于与大多数网络文件系统相关的延迟,   表现不会很好。另外,文件锁定逻辑很多   网络文件系统实现包含bug(在Unix和Unix上)   视窗)。如果文件锁定不起作用,它可能是   两个或多个客户端程序可以修改相同的部分   同一个数据库同时导致数据库损坏。   因为此问题是由底层文件系统中的错误引起的   实现时,SQLite无法阻止它。

请检查Appropriate use for Sqlite的此链接,然后跳转到

部分
  

另一个RDBMS可以更好地工作的情况