2012-04-14 117 views
1

我想知道是否有办法将网络流视为文件。我可能是错的,但我看到一个文件作为字节数组列表。当你在windows中打开一个文件并且写入文件时,你会向该文件(数组列表)插入字节,我相信。通过网络流访问sqlite数据库

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

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

的事情,我一直在想:

  • 部署我与SQL Server应用程序来代替。 (使用SQL服务器部署应用程序并不容易,它会静默地安装服务器,启用tcp连接以及所有必要的配置来实现此目的,而且安装sqlite需要不到20秒的时间,大约需要7分钟!我使用WCF与服务器交谈,所以我可以为每个计划使用的所有查询生成一个函数。因此,如果我想从产品中选择*,我可以调用SelectAllFromProducts()方法,在WCF服务...(这里我有点重新发明轮子)。关于这一点的好处是,我的查询会更快,我相信.Sqlite是无服务器的,所以如果你计划在产品中找到所有项目产品名称就像'foo',那么如果你想一想,计算机将不得不通过网络访问数据库中的所有记录。如果本地计算机r做到这一点,并将少量结果发送给客户端。

回答

1

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

在客户机 - 服务器架构你一些RDBMS而不是SQLite的更好

客户/服务器应用

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

请检查此链接为Appropriate use for Sqlite,并跳转到部分

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

+0

的SQLite声称支持多个连接。从多个线程使用相同连接查询数据库时,我遇到了很多问题。当我分配每个线程时它是自己的连接东西时确定。我想使用sqlite的原因是因为它是部署的。我试着用sql server部署我的应用程序,这不是eassy,需要很长时间才能安装。 – 2012-04-14 14:52:37

+0

安装时间?严重的是,它是一次性的事情,Sqlite会给你在客户端服务器架构上带来很多麻烦。 – Habib 2012-04-14 14:57:22

+0

你是对的每一件事都是为了什么。首先,我将不得不做一个沉默安装的SQL Server Express,然后我将不得不经过这个麻烦:http://stackoverflow.com/questions/9138172/enable-tcp-ip-remote-connections-to-sql- server-express-already-installed-databas。我不认为这很容易做,但它是可行的...这就是为什么我想使用sqlite – 2012-04-14 16:47:22