.NET Compact Framework下SQL CE的使用

C#在Windows CE下实现SQL Server CE数据库操作与同步 C#(发音为 "看井")是微软开发的一种现代、类型安全的面向对象编程语言。它拥有丰富的类库,并且是.NET框架的一部分,允许开发者使用单一语言进行Windows、移动设备、游戏机甚至Web应用程序的开发。C#的语法简洁明了,易于学习,同时提供了面向对象编程的所有特性。远程数据服务(Remote Data Services,RDS)是一种允许客户端通过网络远程访问数据源的技术。在SQL Server CE中,这一功能可以让客户端设备远程访问数据库服务器上的数据。 阅读详情

.NET Compact Framework下SQL CE的使用

 

在Wince和Windows Mobile下最常用的数据库为SQL CE,SQL CE也曾经叫做SQL Server for Windows CE和SQL Server

  Mobile Edition,最新版本命名为SQL Server Compact 3.5 SP1。 SQL Server Compact不仅仅能运行于Wince和Windows Mobile,而且能运行于Windows的PC上,是Access的有效替代品,如果不使用存储过程,在SQL Server Compact下开发的程序几乎可以无修改移植到SQL Server的其他服务器版本上。可以参见这篇文章 SQL Server Express和SQL Server Compact的应用  。在这篇文章中我会使用SQL CE这一命名。

  在.NET Compact Framework下进行SQL CE使用和开发,需要应用库System.Data.SqlServerCe.dll,需要注意的是不同的SQL CE版本使用不用的DLL版本. SQL CE 3.5的库一般对应以下的目录 C:Program FilesMicrosoft SQL Server Compact Editionv3.5 ADO.net DLL,而SQL CE 3.0的库一般对应以下的目录 C:Program FilesMicrosoft Visual Studio 8SmartDevicesSDKSQL ServerMobile,彼此不相兼容。由于开发的命名空间(namespace)是一致的,所以开发的程序可以用在不用的SQL CE版本。

 

  helper类

  下面演示的是一个SQL CE的helper类,这个类只是针对SQL CE数据库,没有考虑移植到其他数据库,所以所有的类都使用SQL CE相关的类。

 

class SqlCeHelper : IDisposable
    {
        private SqlCeConnection connection;
        private SqlCeCommand command;
        private const string connectionString = "Data Source=/DB/db.sdf";

        #region Open/Close
        public void Open()
        {
            try
            {
                connection = new SqlCeConnection(connectionString);
                command = connection.CreateCommand();
                command.Connection = connection;
                command.CommandType = CommandType.Text;

                connection.Open();
            }
            catch (DataException e)
            {
                Console.WriteLine(e.Message);
            }
        }

        public void Close()
        {
            connection.Close();
            connection.Dispose();
        }

        public void Dispose()
        {
            connection.Close();
            connection.Dispose();
            command.Dispose();
        }
        #endregion

        #region Operatons
        public SqlCeDataReader ExecuteReader(string sql)
        {
            command.CommandText = sql;
            SqlCeDataReader reader = null;
            try
            {
                reader = command.ExecuteReader();
            }
            catch (DataException e)
            {
                Console.WriteLine(e.Message);
            }
            return reader;
        }

        public DataSet ExecuteDataSet(string sql)
        {
            command.CommandText = sql;
            SqlCeDataAdapter adapter = new SqlCeDataAdapter(command);
            DataSet ds = new DataSet(); ;

            try
            {
                adapter.Fill(ds);
            }
            catch (DataException e)
            {
                Console.WriteLine(e.Message);
            }
            return ds;
        }

        public int ExecuteNonQuery(string sql)
        {
            command.CommandText = sql;
            int result = -1;

            try
            {
                result = command.ExecuteNonQuery();
            }
            catch (DataException e)
            {
                Console.WriteLine(e.Message);
                
            }
            return result;
        }

        public object ExecuteScalar(string sql)
        {
            command.CommandText = sql;
            object o = null;
            try
            {
                o = command.ExecuteScalar();
            }
            catch (DataException e)
            {
                Console.WriteLine(e.Message);
            }
            return o;
        }
        #endregion

        #region Transaction
        public void BeginTransaction()
        {
            command.Transaction = connection.BeginTransaction();
        }

        public void CommitTransaction()
        {
            command.Transaction.Commit();
        }

        public void RollbackTransaction()
        {
            command.Transaction.Rollback();
        }
        #endregion
    }

 

 

1.建立SQL CE的连接(SqlCeConnection)只需要指定数据库文件路径,在这个类,我hardcode了文件路径,在实际应用中,可以在构

  造函数进行初始化,或者在Open函数中传递路径参数。

  2.由于SQL CE当前版本不支持存储过程,所以SqlCeCommand的CommandType指定为CommandType.Text,只支持执行SQL语句。

  3.实现了通用操作方法ExecuteReader,ExecuteDataSet,ExecuteNonQuery和ExecuteScalar。

  4.SQL CE支持事务(Transaction)。

 

使用

.NET Compact Framework下SQL CE的使用

 

  图片看不清楚?请点击这里查看原图(大图)。

  上图为使用例子的表结构。

 

            SqlCeHelper sqlCe = new SqlCeHelper();

            sqlCe.Open();

            sqlCe.BeginTransaction();
            if (sqlCe.ExecuteNonQuery("delete from t") < 0)
            {
                sqlCe.RollbackTransaction();
                return;
            }

            if (sqlCe.ExecuteNonQuery("insert into t (f1, f2) values (1, 'abc')") < 0)
            {
                sqlCe.RollbackTransaction();
                return;
            }

            SqlCeDataReader reader = sqlCe.ExecuteReader("select * from t where f1 = 1");
            while (reader.Read())
            {
                Console.WriteLine("reader: f2:{0}n", reader["f2"]);
            }
            if (!reader.IsClosed)
            {
                reader.Close();
            }

            if (sqlCe.ExecuteNonQuery("update t set f2 = 'xyz'") < 0)
            {
                sqlCe.RollbackTransaction();
                return;
            }

            DataSet ds = sqlCe.ExecuteDataSet("select * from t");
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                Console.WriteLine("dataset: f2:{0}n", dr["f2"]);
            }

            sqlCe.CommitTransaction();
            sqlCe.Close();

 

 

  使用这个Helper类很简单,先生成这个类的实例,打开数据库连接,使用ExecuteReader和ExecuteDataSet进行查询操作,使用ExecuteNonQuery进行增删改的操作。在操作过程中,同时可以加入事务处理操作,使用完毕关闭数据库连接。

SQL Server Compact Edition(SQL CE)3.5和6.0安装及使用指南 SQL Server Compact Edition(简称SQL CE)是微软公司开发的一种轻量级的关系型数据库管理系统,专为嵌入式和桌面应用程序设计。它能够支持.NET Framework和Windows平台的应用程序,同时提供了丰富的数据存储和查询功能。SQL CE的设计初衷是为了满足那些不需要完整SQL Server功能的小型应用场景,它可以被轻松地嵌入到应用程序中,无需复杂的安装和配置过程。此外,SQL CE的体积小,内存占用低,尤其适合移动应用、桌面应用以及那些对资源有限制要求的应用环境。 阅读详情

相关推荐

国产麒麟系统下用Rider开发C#桌面应用:从环境配置到Avalonia UI实战

本文详细介绍了在国产麒麟系统上使用JetBrains Rider开发C#桌面应用的完整流程,重点讲解了Avalonia UI框架的实战应用。从环境配置、Rider安装到Avalonia项目创建和UI开发技巧,全面覆盖了在非Windows环境下进行C#开发的关键步骤和优化建议,助力开发者高效构建跨平台桌面应用。

weixin_27791839的博客 387

SQL Server CE Database Development with the .NET Compact Framework

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/topmvp - topmvpSQL Server CE Database Development with the .NET Compact Framework takes an in-depth look at SQL Server CE 2.

TopMVP 482

保姆级教程:用掘金量化API手把手复现一个年化17%的网格交易策略(附完整Python代码)

本文提供了一份详细的掘金量化API教程,手把手教你构建一个年化17%的网格交易策略。通过完整的Python代码实现,深入解析网格交易的核心逻辑、参数配置和动态调仓机制,帮助量化新手快速掌握策略开发全流程。教程包含环境配置、代码实现、回测分析和常见问题解答,是学习量化投资的实用指南。

weixin_33709364的博客 300

SQL Server CE和.NET Compact Framework概述

 Microsoft 使用 SQL Server 2005 Compact Edition(SQL Server CE),您可以在支持的设备上创建、管理和维护本地数据库。您还可以与 Microsoft SQL Server 数据库同步此本地数据库,在设备和服务器之间交换数据。   使用 .NET Compact Framework   Microsoft .NET Compact Framew...

weixin_33809981的博客 110

【数据集】未来不同情景下预测数据:如人口、土地利用等

未来不同情景下预测数据:如人口、土地利用等

WW、forever的博客 2995

手把手教你学SOME/IP「1.0•概述」

本文介绍了SOME/IP协议的基本概念和主要特点。SOME/IP全称为"Scalable service-Oriented MiddlewarE over IP",是一种面向服务的车载嵌入式通信协议,支持远程过程调用、事件通知等功能。文章指出SOME/IP是AUTOSAR标准的一部分,在车载以太网架构中处于应用层位置,负责服务调度和通信封装。协议具有可扩展性强、资源消耗低、兼容性好等优势,能满足汽车电子领域对实时性、可靠性的严格要求。同时,文章也说明了SOME/IP的正确书写规范,并解释

nihaoljq2010的博客 679

.NET Compact Framework在windows ce 5.0上直接访问桌面版的SQL Server 2005

v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);} Normal 0 false 7.8 磅

Pipi0714的专栏 2959

11、Windows Autopilot 部署与设备注册全攻略

本文详细介绍了Windows Autopilot的完整部署流程,涵盖注册配置文件设置、注册状态页面(ESP)配置、设备注册方法(包括CSV导入、JSON注入、在线注册等)、自动化脚本实现及故障排除技巧。通过手动与PowerShell自动化两种方式指导用户完成配置,并提供流程图、最佳实践和常见问题解答,帮助IT管理员高效实现设备零接触部署与管理。

ii567的博客 342

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

在.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的兼...

weixin_34162629的博客 218

【史上最全面esp32教程】网络篇和tcp/ip的使用

ESP32史上最全面wifi和tcp/ip连接及示例程序

m0_62599305的博客 9521

【unity实战】使用unity的Navigation+LineRenderer实现一个3D人物寻路提前指示预测移动轨迹的效果,并可以适配不同的地形

本文介绍了在Unity中使用Navigation导航系统和LineRenderer实现3D人物寻路轨迹预测效果的方法。通过NavMesh.CalculatePath计算路径点,结合Physics.Raycast进行地面点投射,将路径点赋予LineRenderer渲染出移动轨迹。关键点包括:1)利用NavMesh.CalculatePath计算两点间可行走路径;2)通过射线检测获取地面点提高路径适配性;3)使用协程定期更新路径绘制。文章还提供了完整代码实现,并说明需要将地面图层设置为Ground并进行导航网格

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 458

.NET Compact Framework Data Provider for SQL Server CE

.NET Compact Framework Data Provider for SQL Server Mobile Standard Data Source=MyData.sdf;Persist Security Info=False; SQL Server Compact How to specify the location of t...

weixin_30326745的博客 134

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

用 SQL Server CE 2.0 和.NET Compact Framework 开发紧凑而功能强大的移动应用程序

原文出处:MSDN Magazine Jan 2003(Go Mobile...)本文假定你熟悉SQL Server 和 Visual Studio。 概要  开发人员在为移动设备创建解决方案时可以有很多种选择。最大的挑战之一是找到一种既紧凑又健壮的本地存储方案。SQL Server CE 2.0 承诺在产品交付时两者兼备。其最新版本将比以往的版本在特色和性能上都有一个巨大的飞跃。本文将回顾开

yanbo_hu的专栏 739

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Pocket PC应用程序中使用SQL Server CE(转)

最近发布的Microsoft .NET Compact Framework beta1版包括了SQL Server CE2.0,SQL Server CE将SQL Server 2000扩展到windows CE环境中,同时它提...

cuankuangzhong6373的博客 196

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SQL Server 2005 CE基础概要

SQL Server 2005 Compact Edition(本文以后均将SQL Server 2005 Compact Edition缩写为SQL Server CE)是微软推出的一个适用于嵌入到移&lt;!-- --&gt;动应用的精简数据库产品,Windows Mobile开发人员能够使用SQL Server CE开发出将数据管理能力延展到Window Mobile移&lt;!-- --&...

树高者鸟宿之,德厚者士趋之 132

用 SQL Server CE 2.0 和 .NET Compact Framework 创建紧凑且可靠的移动应用程序

作者将对 SQL Server CE 2.0 中的新功能与以前的版本进行比较和对照。在此之后,作者将构建一个示例应用程序来进行阐释。点击此处阅读全文

2439
上一篇: 在两个SQL Server数据库之间复制对象
下一篇: SqlCe事务
gmtim
博客等级 码龄22年 2粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值