Vb.net windowsce-数据库

Vb.net windowsce-数据库,vb.net,sql-server-2008,Vb.net,Sql Server 2008,我需要在windows CE 5.0设备上设置一个应用程序,以扫描装箱单中的条形码和相关的履行项目,并更新服务器上的库存。我正在使用VB.NET。但是,与数据库交互的最佳方式是什么?集成服务、ADO.NET、RDA。。。等试图弄清楚我应该使用什么来与数据库交互,这有点让人不知所措。它目前是Access数据库,但我想我可能需要将其迁移到SQL Server或SQL Server Express 我还需要将装箱单从设备打印到网络打印机。有什么方法可以做到这一点吗?我的建议是使用SQL Server

我需要在windows CE 5.0设备上设置一个应用程序,以扫描装箱单中的条形码和相关的履行项目,并更新服务器上的库存。我正在使用VB.NET。但是,与数据库交互的最佳方式是什么?集成服务、ADO.NET、RDA。。。等试图弄清楚我应该使用什么来与数据库交互,这有点让人不知所措。它目前是Access数据库,但我想我可能需要将其迁移到SQL Server或SQL Server Express


我还需要将装箱单从设备打印到网络打印机。有什么方法可以做到这一点吗?

我的建议是使用SQL Server Compact edition()作为存储引擎,使用System.Data.SqlServerCe命名空间()中SqlCe的ADO.net实现进行代码交互。它们与VisualStudio2008集成得非常好,包括强类型数据集的设计器支持和设备上数据内容的运行时检查等


不知道如何打印。

如果您的设备必须在断开连接的状态下(即未连接到服务器)工作,Sql CE是一个很好的选择。但是,如果您确实使用Sql CE,我强烈建议不要使用RDA将本地更改保留回服务器数据库(请参阅)。在任何情况下,RDA合并复制都要求您的服务器数据库是Sql server

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


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

在今天的所有场景中,我建议使用SQLite。它是当今使用最多的数据库。不要将自己绑定到数据库生态系统。只需搜索“针对Windows CE的预编译二进制文件(.NET Compact Framework)”。然后是一个
SQLite.Interop.*.dll
System.Data.SQLite.dll
。必须在EXE文件之外放置和部署
SQLite.Interop.*.dll
System.Data.SQLite.dll
是托管包装器,您必须在项目中引用它。例如:

SQL Server Compact与大多数移动平台(如iOS、Android等)不兼容。Microsofts对旧目标平台的支持很差,使得Windows CE只有SQL Server Compact 3.5 SP2,而您没有一些基本的SQL函数,如“LIMIT”。在桌面操作系统(>Windows XP)上生成的数据库也需要在设备上转换(长延迟,当您第一次打开数据库时),因为MS在桌面和Windows CE上使用不同的代码页

这是微软关于RDA的声明:

由于设计限制,远程数据访问(RDA)将在将来的版本中删除。如果您目前正在使用RDA,则应该考虑转换为ADO.NET的微软同步服务。如果您计划在新的应用程序中使用RDA,那么应该考虑合并复制或同步服务。请注意,同步服务当前仅适用于Windows桌面操作系统

与数据库交互的最佳方式就是在服务器上构建数据库,将其压缩到als deflate(可在桌面和Compact via下使用),然后将其整体发送到设备。朴素而愚蠢。大多数设备的导入性能都很差,因此在本地进行导入可能会花费太多时间,即使您有一个奇特的同步框架

要传输数据库,您可以使用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
}
要格式化对象,只需使用以下内容

<>但是,如果你有WLAN访问的地方,我会考虑编写一个浏览器应用程序,并使用移动浏览器和一个Web服务器来满足你的需要。请记住,基于WindowsCE5的设备没有现成的HTML5支持。如果你有选择,考虑切换到基于Android的设备。