.NET Compact Framework下SQL CE兼容性问题

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

在.NET Compact Framework常用SQL CE数据库进行数据存储,SQL CE是一个扩展名为*.sdf的文件数据库,曾经命名为SQL Server for Windows CE和SQL Server Mobile Edition,最新版本命名为SQL Server Compact Edition,在文章中统一叫SQL CE。本文主要讲述SQL CE 3.0和SQL CE 3.5的兼容性问题。

.NET Compact Framework下开发SQL CE统一使用System.Data.SqlServerCe.dll,该dll封装的命名空间和类是一致的,所以程序代码是统一的。但是由于*.sdf数据文件格式不一样,MS提供不同版本System.Data.SqlServerCe.dll,其相关组件存放的位置也不一样。
在vs2005下开发默认使用CF.net的版本为2.0,同时默认使用的SQL CE版本是3.0。一般在以下目录 C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SQL Server\Mobile\v3.0或者C:\Program Files\Microsoft SQL Server 2005 Mobile Edition\Device\Mobile\v3.0。

在vs2008下开发默认使用CF.net的版本为3.5,但是可以选择2.0,同时默认使用的SQL CE版本是3.5。一般存放在C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Devices\。

sdf数据文件和System.Data.SqlServerCe.dll是一对一绑定,3.5的sdf数据文件只能用3.5的SqlServerCe.dll,3.0的sdf数据文件只能用3.0的SqlServerCe.dll的,彼此互不兼容。

如果使用3.0的SqlServerCe.dll访问3.5的sdf数据文件会有以下异常

复制代码

System.Data.SqlServerCe.SqlCeException : You are trying to access an older version of a SQL Server 

Mobile database. If this is a SQL Server CE 1.0 or 2.0 database, run upgrade.exe. 

If this is a SQL Server Mobile 3.0 database, run Compact / Repair. 

[ Db version = 3505053,Requested version = 3004180,File name = DB\db.sdf ]
at System.Data.SqlServerCe.SqlCeConnection.ProcessResults()
at System.Data.SqlServerCe.SqlCeConnection.Open()
at System.Data.SqlServerCe.SqlCeConnection.Open()

复制代码

 

如果使用3.0的SqlServerCe.dll访问3.5的sdf数据文件会有以下异常

System.Data.SqlServerCe.SqlCeInvalidDatabaseFormatException : Unspecified error
at System.Data.SqlServerCe.SqlCeConnection.ProcessResults()
at System.Data.SqlServerCe.SqlCeConnection.Open()
at System.Data.SqlServerCe.SqlCeConnection.Open()

 

解决方法


由于在CF.NET下开发SQL CE 3.0和3.5的代码是一样,可以参考 .NET Compact Framework下SQL CE的使用 ,所以最简单的解决方法是升级3.0到3.5,这样原先使用3.0的程序可以在不修改源码的情况下使用3.5。

数据文件升级

使用vs2008打开3.0的sdf文件

点击OK进行升级。

 

程序引用的升级

在项目的引用中删除System.Data.SqlServerCe的引用,添加 C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Devices\System.Data.SqlServerCe.dll到新引用。

  

在设备上安装SQL CE 3.5

下载SQL CE 3.5 可参考 SQL Server Express和SQL Server Compact的应用, 安装后可以在 C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Devices\wce500下选择相应的硬件平台进行安装。

 

初步试了一下,native的C++代码不能源码级支持两个不同的版本,需要进一步的研究才知道原因。



    本文转自Jake Lin博客园博客,原文链接:http://www.cnblogs.com/procoder/archive/2009/04/15/1436275.html,如需转载请自行联系原作者


相关文章
|
2月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
540 2
|
5月前
|
C++ Windows
.NET Framework安装不成功,下载`NET Framework 3.5`文件,Microsoft Visual C++
.NET Framework常见问题及解决方案汇总,涵盖缺失组件、安装失败、错误代码等,提供多种修复方法,包括全能王DLL修复工具、微软官方运行库及命令行安装等,适用于Windows系统,解决应用程序无法运行问题。
356 3
|
2月前
|
开发框架 安全 .NET
Microsoft .NET Framework 3.5、4.5.2、4.8.1,适用于 Windows 版本的 .NET,Microsoft C Runtime等下载
.NET Framework是Windows平台的开发框架,包含CLR和FCL,支持多种语言开发桌面、Web应用。常用版本有3.5、4.5.2、4.8.1,系统可同时安装多个版本,确保软件兼容运行。
582 0
Microsoft .NET Framework 3.5、4.5.2、4.8.1,适用于 Windows 版本的 .NET,Microsoft C Runtime等下载
|
3月前
|
C++
提示缺少.NET Framework 3.5 安装错误:0x80070002、0x800F0950\0x80004002
.NET Framework常见问题及解决方法汇总,
475 0
|
5月前
|
C++ Windows
WindowsDLL修复专家,MSVCP**、DLL修复vcruntime**、DLL修复、`.Net Framework`缺失、DirectX类DLL修复、VC运行库修复
Windows DLL修复专家是一款专为解决因DLL文件缺失、版本错误导致的软件或游戏无法运行问题的系统工具。它支持一键扫描和修复各类DLL异常,涵盖MSVCP、vcruntime、.NET Framework、DirectX等多种常见问题。具备自动检测、备份还原功能,确保修复过程安全可靠。适用于软件报错、系统异常及新系统适配场景,降低用户手动修复门槛,提升系统稳定性与兼容性。
206 3
|
4月前
.NET Framework 3.5离线安装包合集下载
本文介绍了如何获取和安装.NET Framework运行库离线合集包。用户可通过提供的链接下载安装包,安装过程简单,按提示逐步操作即可完成。安装时可选择所需版本,工具会自动适配架构,无需手动判断,方便高效。
1639 0
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
529 13
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
351 9

热门文章

最新文章