2009-10-27 145 views
0

我需要设置一个应用程序来扫描装箱单上的条形码和windows CE 5.0设备上的相关配送项目,并更新服务器上的清单。我正在使用VB.NET。但是,与数据库交互的最佳方式是什么? Integration Services,ADO.NET,RDA等等......试图找出我应该用来与数据库进行交互的内容有点压倒一切。它目前是一个Access数据库,但我想我可能需要将它迁移到SQL Server或SQL Server Express。Windows CE - 数据库

我还需要将装箱单从设备打印到网络打印机。有没有办法做到这一点?

回答

1

Sql CE是一个很好的选择如果您的设备必须在断开连接的状态下(即未连接到服务器)运行。但是,如果您确实使用Sql CE,则强烈建议使用而不是使用RDA将本地更改保留回服务器数据库(请参阅this answer)。无论如何,RDA合并复制都需要您的服务器数据库为Sql Server。

如果您的设备始终通过无线网络连接到服务器,则根本不需要设备上的本地数据库。您的设备可以通过运行在服务器上的ASP.Net Web服务上传和下载数据。使用DataSets进行这种通信是一个不错的选择,因为它们本质上是与数据库无关的(因此你的PDA代码不会特别在意你在服务器上使用的数据库)。

Web服务方法还可以让您处理打印要求。 PDA会将相关信息发送到Web服务方法,然后该方法将处理打印到网络打印机。

0

在所有今天的场景中,我会推荐使用SQLite。这是今天使用最多的数据库。不要将自己绑定到数据库生态系统。只需go here并搜索“Windows CE(.NET Compact Framework)的预编译二进制文件”。然后你有一个SQLite.Interop.*.dllSystem.Data.SQLite.dllSQLite.Interop.*.dll必须放置并部署在您的EXE文件之外。 System.Data.SQLite.dll是托管包装器,您必须在项目中引用它。示例:Create SQLite Database and table

SQL Server Compact与大多数移动平台(如iOS,Android等)不兼容。对旧版目标平台的微软支持很差,只让Windows CE只有SQL Server Compact 3.5 SP2,而你没有像“LIMIT”这样的重要SQL函数。由于MS在桌面和Windows CE上使用不同的代码页,桌面操作系统(> Windows XP)上生成的数据库也需要在设备上进行转换(长时间延迟,当您第一次打开数据库时)。

这是关于RDA微软声明:

由于设计上的限制,远程数据访问(RDA)将在未来的版本中删除。如果您当前正在使用RDA,则应考虑过渡到ADO.NET的Microsoft同步服务。如果您打算在新应用程序中使用RDA,则应考虑合并复制或同步服务。请注意,Sync Services目前仅适用于Windows桌面操作系统。

与数据库交互的最佳方式就是在服务器上构建数据库,并将其压缩(通过System.IO.Compression在桌面和Compact下提供)并将其发送到整个设备。平原和愚蠢。大多数设备的导入性能较差,因此即使您有一个奇特的同步框架,在本地执行导入操作可能会花费太多时间。

要传输数据库,您可以使用WCF服务或仅使用HTTPS GET的任何Web服务器。像这样:

// ppp_peer is in most cases the active sync connected pc 
string url = @"https://ppp_peer/export/database.db.gz"; 
string html = string.Empty; 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
using (Stream stream = response.GetResponseStream()) 
using (FileStream fs = new FileStream(stream)) 
{ 
    // Decompress your database here 
} 

要ORM您POCO对象只是使用类似https://bitbucket.org/twincoders/sqlite-net-extensions

但是,如果你有WLAN接入无处不在,我会考虑与Web服务器写一个浏览器应用程序,并通过手机浏览器一起满足您的需求。请记住,基于Windows CE 5的设备不具备开箱即用的HTML 5支持。如果您有选择,请考虑切换到基于Android的设备。