.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文件

2009041510533698.png

点击OK进行升级。

2009041510540718.png

 

程序引用的升级

在项目的引用中删除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下选择相应的硬件平台进行安装。
2009041511394875.png

 

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



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


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
62 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
6月前
|
关系型数据库 MySQL 数据库
找不到请求的 .Net Framework Data Provider。可能没有安装
做的一个项目,框架为.net framework 数据库为mysql 出现如标题错误 检查是否安装mysql、是否安装mysql connector net 笔者是因为没有安装后者mysql connector net 下载地址: [mysql connector net](https://downloads.mysql.com/archives/c-net/ "mysql connector net") 笔者安装截图如下: ![请在此添加图片描述](https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/c
56 0
|
6月前
|
C# Windows
[记录]c#.net framework 4.5调用运行时库
[记录]c#.net framework 4.5调用运行时库
|
1月前
|
Windows
windows server 2019 安装NET Framework 3.5失败,提示:“安装一个或多个角色、角色服务或功能失败” 解决方案
windows server 2019 安装NET Framework 3.5失败,提示:“安装一个或多个角色、角色服务或功能失败” 解决方案
|
6月前
|
Windows
​史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
​史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
551 0
|
2月前
|
SQL 开发框架 .NET
ASP.NET Web——GridView完整增删改查示例(全篇幅包含sql脚本)大二结业考试必备技能
ASP.NET Web——GridView完整增删改查示例(全篇幅包含sql脚本)大二结业考试必备技能
32 0
|
4月前
|
SQL 数据库连接 数据库
VB.NET 中使用SqlConnection类连接到Microsoft SQL Server数据库的详细步骤
VB.NET 中使用SqlConnection类连接到Microsoft SQL Server数据库的详细步骤
90 0
|
4月前
|
C# Windows
C#安装“Windows 窗体应用(.NET Framework)”
C#安装“Windows 窗体应用(.NET Framework)”
50 0
|
7月前
|
开发框架 .NET 编译器
C#OOP之十四 .Net Framework简介
C#OOP之十四 .Net Framework简介
52 0
|
9月前
|
SQL 开发框架 前端开发
ASP.NET Core+Element+SQL Server开发校园图书管理系统(完)
ASP.NET Core+Element+SQL Server开发校园图书管理系统(完)
94 0