 Silverlight5 可以实现在客户端电脑上创建本地数据库(像sqlite库)并操作

时间:2022-09-12 21:17:23
现在有个webpos项目之前是用ActiveX控件来达到客户端的操作,之前客户端的ActiveX控件主要做了:1.创建本地Sqlite数据库存放下载下来的基础数据(主要是商品信息)、策略数据等,这样离线(没有网络)时也可以正常零售(零售单存放本地库);2.执行策略时计算商品价格(这个策略数据都是从本地库得到的);3.打印小票;4.上传没有上传的单据。
 现在想使用Silverlight5开发控件和之前ActiveX控件一样的效果的控件(因为Silverlight可以跨浏览器)。
  我这也是第一次接触Silverlight,看了好久资料,还是很迷糊,好像说Silverlight没有创建本地库的功能,对于数据存放本地只有个【独立存储】的功能,就连连接服务器库也是只能通过WCF或者WebService(不知是不是这样的)。
   那Silverlight5到底能不能在客户端电脑上建立轻量级数据库(像SQLite库)以及对本地库的操作呢?望Silverlight5的开发大侠们给指导指导,谢谢!

26 个解决方案

#1


不知道!
既然只是在本地进行读写,不使用数据库不可以吗?

#2


数据还是有点多的,毕竟是要保证离线(没网时)也可以正常的做零售操作

#3


为什么没有人呢?
Silverlight5到底能不能在客户端电脑上建立轻量级数据库(像SQLite库)以及对本地库的操作呢?

#4


对于Silverlight不熟悉,但是我找到了例子,你看看,希望对你有用!
http://www.silverlightchina.net/html/tips/2009/1210/386.html

#5


类似的这些例子我都看过啦,这些都是服务端的,我想要的是在客户端本地创建轻量级数据库并操作。

#6


帖子再次顶起来,等待能人的解答  Silverlight5 可以实现在客户端电脑上创建本地数据库(像sqlite库)并操作

#7


帮你转到SilverLight专区。

#8


SL一门很好的技术,被微软给废了,相当的可惜

#9


Silverlight5的确可以通过提升权限来进行本地文件的访问。。我试过操作本机的API,打开本机的文件。都是可以做到的。。访问数据库什么的,应该没问题。

#10


可以说的具体点吗,怎样创建本地数据库和操作本地数据库(特别是sqlite数据库)

#11


 Silverlight5 可以实现在客户端电脑上创建本地数据库(像sqlite库)并操作

#12


使用ActiveX插件在客户端访问数据库是一种不好的习惯,最好不要这样做。
本地的sqlite数据如果能做服务的话,可以通过服务方式访问,或者在服务端的数据库里记录用户的客户端数据然后直接使用wcf代码访问即可。

#13


使用服务方式连接客户端数据库与服务器连接数据是完全一样的,只不过连接地址是localhost,类似
msl;provider=System.Data.SqlClient;provider connection string="data source=localhost;initial catalog=sqlite_database;user id=sa;password=*;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />

#14


动不动就写个插件会给安装部署带来不一致,破环客户端安全机制,最好不要用。

#15


除了不清楚怎么创建Sqlite数据库之外,其他功能部分,Silverlight是可以完成的。对于“对于数据存放本地只有个【独立存储】的功能,就连连接服务器库也是只能通过WCF或者WebService”,存放不是只能放在独立存储吧,就像我平时测试,数据库都是放在自己机器就可以了,虽然不清楚Sqlite是怎么个存储数据;silverlight的WCF方面,你在msdn上跟着教程做一遍,就会有了解了,vs上内置的模板已经简化了不少wcf的配置。

#16


使用企业级数据库是不分位置的,wcf是通过数据库连接串访问数据库,sqlite如果具有服务功能的,就可以通过连接串访问。
 你说的独立存储解决的是文件系统访问的方式问题,浏览器访问客户端文件系统要受到安全策略限制是不能访问文件系统的,只用在程序中使用对话框由用户发起通过流访问单个文件上传或下载。由于既不能通过代码写本地磁盘又不能写客户端内存,所以silverlight引入了独立存储的技术通过cookies机制模拟客户端的访问一个虚拟的文件系统的读写操作。 

#17


至少db4o等数据库是有silverlight驱动的,可以为浏览器端运行的silverlight在客户端长期保存数据库。

sqlite有没有silverlight客户端数据库驱动,我不太清楚。

#18


事实上,在silverlight的客户端存储中保存大文件(例如对象集合的json形式)、甚至直接保存数据集合(它会自动序列化、反序列化)都是相当方便的。

我就不用什么现成的数据库,自己实现客户端数据持久化。

#19


引用 9 楼 u013542754 的回复:
Silverlight5的确可以通过提升权限来进行本地文件的访问。。我试过操作本机的API,打开本机的文件。都是可以做到的。。访问数据库什么的,应该没问题。


普通的客户端数据存储是不需要OOB权限的。

例如我们可以开辟100M数据空间,这通常就足够了,这根本不需要什么OOB权限。

#20


sp1234说的有点不着边际,拿段代码看一下就知道了,在客户端保存大数据真的没有必要经过序列化和反序列,可以直接通过对话框下载和上载文件,必须是对话框方式,客户端代码不能自动实现,用户使用起来麻烦。实际上以数据库方式保存的话就不必通过对话框,客户端代码可以自动实现。

#21


像零售这类似的你这样搞有点不安全哦,如果已销售,但保存失败,是不是就有问题,若先保存成功再销售,但保存成功后停电了,还没有来得及销售呢,这样数据的安全性就会出问题.

#22


现在html5都是把数据能本地存储作为一个卖点,但是在这里居然有人反对。
网络再强大能比本地数据用得好?既然用了SL,目的就是在富客户端做尽量多的事情,要做尽量多的事情,当然要尽量多的数据才行。
安全问题是另一个问题,完全可以同时加密交易记录解决,就是交易记录加密为文件不使用,在服务器端对账即可。

#23


Sterling

这个怎么样,最近我也需要 sl 可以的一个本地数据库解决方案,但真不好找,没有sl端的数据访问层,除了这个
这个是非常小的团队维护的,稳定性 bug率 可能比较多一点

https://sterling.codeplex.com/

#24


做本地数据库的往往数据量都不大,那么为什么不序列化后存在本地存储区,查询用linq来查呢?!

#25


该问题怎么解决啊?我现在也遇到同样要保存离线数据的问题,请各位大神赐教!

#26


Silverlight 可以将数据以文件形式保存到 “隔离存储”空间。


System.IO.IsolatedStorage

#1


不知道!
既然只是在本地进行读写,不使用数据库不可以吗?

#2


数据还是有点多的,毕竟是要保证离线(没网时)也可以正常的做零售操作

#3


为什么没有人呢?
Silverlight5到底能不能在客户端电脑上建立轻量级数据库(像SQLite库)以及对本地库的操作呢?

#4


对于Silverlight不熟悉,但是我找到了例子,你看看,希望对你有用!
http://www.silverlightchina.net/html/tips/2009/1210/386.html

#5


类似的这些例子我都看过啦,这些都是服务端的,我想要的是在客户端本地创建轻量级数据库并操作。

#6


帖子再次顶起来,等待能人的解答  Silverlight5 可以实现在客户端电脑上创建本地数据库(像sqlite库)并操作

#7


帮你转到SilverLight专区。

#8


SL一门很好的技术,被微软给废了,相当的可惜

#9


Silverlight5的确可以通过提升权限来进行本地文件的访问。。我试过操作本机的API,打开本机的文件。都是可以做到的。。访问数据库什么的,应该没问题。

#10


可以说的具体点吗,怎样创建本地数据库和操作本地数据库(特别是sqlite数据库)

#11


 Silverlight5 可以实现在客户端电脑上创建本地数据库(像sqlite库)并操作

#12


使用ActiveX插件在客户端访问数据库是一种不好的习惯,最好不要这样做。
本地的sqlite数据如果能做服务的话,可以通过服务方式访问,或者在服务端的数据库里记录用户的客户端数据然后直接使用wcf代码访问即可。

#13


使用服务方式连接客户端数据库与服务器连接数据是完全一样的,只不过连接地址是localhost,类似
msl;provider=System.Data.SqlClient;provider connection string="data source=localhost;initial catalog=sqlite_database;user id=sa;password=*;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />

#14


动不动就写个插件会给安装部署带来不一致,破环客户端安全机制,最好不要用。

#15


除了不清楚怎么创建Sqlite数据库之外,其他功能部分,Silverlight是可以完成的。对于“对于数据存放本地只有个【独立存储】的功能,就连连接服务器库也是只能通过WCF或者WebService”,存放不是只能放在独立存储吧,就像我平时测试,数据库都是放在自己机器就可以了,虽然不清楚Sqlite是怎么个存储数据;silverlight的WCF方面,你在msdn上跟着教程做一遍,就会有了解了,vs上内置的模板已经简化了不少wcf的配置。

#16


使用企业级数据库是不分位置的,wcf是通过数据库连接串访问数据库,sqlite如果具有服务功能的,就可以通过连接串访问。
 你说的独立存储解决的是文件系统访问的方式问题,浏览器访问客户端文件系统要受到安全策略限制是不能访问文件系统的,只用在程序中使用对话框由用户发起通过流访问单个文件上传或下载。由于既不能通过代码写本地磁盘又不能写客户端内存,所以silverlight引入了独立存储的技术通过cookies机制模拟客户端的访问一个虚拟的文件系统的读写操作。 

#17


至少db4o等数据库是有silverlight驱动的,可以为浏览器端运行的silverlight在客户端长期保存数据库。

sqlite有没有silverlight客户端数据库驱动,我不太清楚。

#18


事实上,在silverlight的客户端存储中保存大文件(例如对象集合的json形式)、甚至直接保存数据集合(它会自动序列化、反序列化)都是相当方便的。

我就不用什么现成的数据库,自己实现客户端数据持久化。

#19


引用 9 楼 u013542754 的回复:
Silverlight5的确可以通过提升权限来进行本地文件的访问。。我试过操作本机的API,打开本机的文件。都是可以做到的。。访问数据库什么的,应该没问题。


普通的客户端数据存储是不需要OOB权限的。

例如我们可以开辟100M数据空间,这通常就足够了,这根本不需要什么OOB权限。

#20


sp1234说的有点不着边际,拿段代码看一下就知道了,在客户端保存大数据真的没有必要经过序列化和反序列,可以直接通过对话框下载和上载文件,必须是对话框方式,客户端代码不能自动实现,用户使用起来麻烦。实际上以数据库方式保存的话就不必通过对话框,客户端代码可以自动实现。

#21


像零售这类似的你这样搞有点不安全哦,如果已销售,但保存失败,是不是就有问题,若先保存成功再销售,但保存成功后停电了,还没有来得及销售呢,这样数据的安全性就会出问题.

#22


现在html5都是把数据能本地存储作为一个卖点,但是在这里居然有人反对。
网络再强大能比本地数据用得好?既然用了SL,目的就是在富客户端做尽量多的事情,要做尽量多的事情,当然要尽量多的数据才行。
安全问题是另一个问题,完全可以同时加密交易记录解决,就是交易记录加密为文件不使用,在服务器端对账即可。

#23


Sterling

这个怎么样,最近我也需要 sl 可以的一个本地数据库解决方案,但真不好找,没有sl端的数据访问层,除了这个
这个是非常小的团队维护的,稳定性 bug率 可能比较多一点

https://sterling.codeplex.com/

#24


做本地数据库的往往数据量都不大,那么为什么不序列化后存在本地存储区,查询用linq来查呢?!

#25


该问题怎么解决啊?我现在也遇到同样要保存离线数据的问题,请各位大神赐教!

#26


Silverlight 可以将数据以文件形式保存到 “隔离存储”空间。


System.IO.IsolatedStorage