0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

探究SQLite在嵌入式系统Wince中的应用

电子工程师 来源:微型机与应用蒋晶,郝继 作者:微型机与应用蒋晶 2021-03-31 10:39 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

随着科学技术的发展,嵌入式系统成为了科技发展的主要领域, Linus和Wince是比较常见的嵌入式系统。嵌入式开发过程离不开数据库的应用,对于嵌入式数据库的选择是必要的。通常,嵌入式系统选择的数据应该尽量小,SQLite在Linux中的应用很广泛,本设计介绍了SQLite作为一款小巧的嵌入式数据库在Wince中的应用实例。

1 SQLite数据库的介绍与选择

1.1 SQLite数据库结构

SQLite数据库结构图如图1所示。

1.2 SQlite数据库的特点

SQLite是一个开源的嵌入式关系数据库,结构紧凑,可靠性强。有以下特点:

(1)使用非常简单。只需要掌握3个核心API函数,大多数的SQL语句都可以使用。

(2)占用很少的存储器空间。SQLite完全独立,数据库引擎和应用程序在同一系统进程中,因此运行速度较高。

(3)支持ACID事务,在系统出现问题或电源断电时不会出现数据丢失现象。

(4)支持多种语言,像C/C++/C#等。

(5)支持多个嵌入式操作系统平台,如Linux系统、Wince系统等。

2 SQlite的选择

首先,SQL Server CE是Wince自身的数据库,必须在Wince系统中安装3个文件才能使用,而SQLite只需要在电脑上安装SQlite-1.0.65.0,把生成的SQlite.Interop.065.DLL移植到Wince系统运行的程序中,并在Visual Studio2008写程序时添加一个引用即可,操作较简单。其次SQLite占用很少的存储器空间(150 KB~250 KB),但是SQL Server CE却要占用 1 MB~3 MB的空间。最重要的是SQLite具有良好的移植性,可以应用到多个嵌入式系统,而SQL Server CE只能在Wince中运行。

3 SQLite的应用硬件及软件平台

本文探讨中以S3C2440作为处理器ARM9的硬件平台,以Wince6.0为应用系统,支持.NET2.0平台。在Visual Studio 2008软件平台中用 C#中编写程序,但是在新建项目中选择智能设备时要选择.NET2.0平台。在Visual Studio 2008中用C#编写程序时,第一次使用时要添加引用System.Data.SQLite,在程序中添加using指令集,这样可以通过软件编写程序实现建库建表的功能。

4 SQLite在Wince中的应用实例

4.1 Wince中显示数据的控件DataGrid及其属性

DataGrid控件实际上是一个固定的列集合,每一列的行数都是不确定的,可以看作一个用来显示数据的网格。它的网格是看不见的,只有建立了数据表,才能看到其中每一行和每一列的具体内容,如果一个单元格的文本太长,就不能在单元格中全部显示。但是在Wince系统中显示数据的控件只有这一个,所以不能完全显示数据这一问题正是本设计所要解决的。图2显示了DataGrid在Wince中的属性。

4.2 SQLite建数据库的步骤

SQLite建数据库的步骤如下:

(1)通过SQLiteConnection对数据库进行连接,通过软件建数据库,首先要有数据源,如:

SQLiteConnection conn=new SQLiteConnection(“Data Source=\Program Files\ maindata.db”);

对数据库要进行操作需要执行的命令,如SQLiteCommand cmd=new SQLiteCommand();

(2)每次使用数据库前需要打开数据库,还需要连接数据库,关闭数据库;

(3)通过 CREATE TABLE SQL语句进行建表。必须给表注上表名,方便下面操作。如:

{cmd.CommandText=“CREATETABLE ServerLert(Numintrger,BedNum varchar(20),ServerItem varchar(50),ServerTime varchar(30),Passwords varchar(30));”

(4)可以通过INSERT INTO 语句进行插入数据。如:

cmd.CommandText=“INSERT INTO ServerLert(Num,BedNum,ServerItem,ServerTime) VALUES(1 ,′2′,′测血糖′,′10-12-10 15:50:00′)”;

(5)数据库至此建成,由于插入的时间单元格不能完全显示,因此需要通过对图2中标注有灰色背景的TableStyles进行设置[7]。如:

DataGridTableStyle dgts=new DataGridTableStyle();

dgts.MappingName=ds.Tables[0].TableName;

DataGridTextBoxColumn dgtbc=new DataGridTextBoxColumn();

dgtbc.HeaderText=ds.Tables[0].Columns[0].ColumnName;

dgtbc.MappingName=ds.Tables[0].Columns[0].ColumnName;

dgtbc.Width=70;

dgts.GridColumnStyles.Add(dgtbc);

上面是对表中第一列进行的宽度设置主要是对DataGridTableStyle中列的格式进行设置,这就解决了显示文本过长的问题。第二列设置80,第三列设置了170,在Wince中运行的结果。如图3所示。

4.3 Wince通过DataGrid属性建数据库的分析

DataGrid在应用于基于Wince的Windows mobile智能设备时,主要针对DataGridTableStyle属性进行设置。根据应用于Windows mobile的原理对基于Wince的ARM9的嵌入式设备中建数据库还是行不通。对其列的属性进行操作设置仍然改变不了列的宽度,所以这种路径行不通。试了很多种方法,最后通过软件编程进行设置,得到了图3的结果。比较DataGridTableStyl进行设置与软件设置发现,问题在于表的MappingName与列的MappingName设置时,必须对应才能实现修改功能。

用DataGridTableStyle设置,如果列的MappingName与数据库中的建表的列不对应,则映射不存在,从而找不到网格去显示数据,更无法对数据的列宽进行操作。所以通过软件编程,可以对建在缓存区域中的每一张表中所有的列进行操作,解决文本过长不能完全显示的问题。

通过上面的介绍可以看出,SQLite作为开源的嵌入式数据库应用在Wince中的一个优点就是建表比较简单,不像SQL CE数据库,在Wince运行中需要先创建表,把所建的数据库放在Wince的系统中,添加数据源时再去绑定这个数据源。对于在.net2.0平台建立的数据库,添加数据源时无法找到路径,所以这种方法不可行。通过SQLite软件创建数据库的方法则可以改善上述不足。SQLite作为一款小巧的嵌入式数据库,发展前景很大,在基于ARM的Wince操作系统有着广泛应用。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5186

    文章

    20146

    浏览量

    328779
  • API
    API
    +关注

    关注

    2

    文章

    2147

    浏览量

    66226
  • 数据库
    +关注

    关注

    7

    文章

    3993

    浏览量

    67733
  • ACI
    ACI
    +关注

    关注

    0

    文章

    6

    浏览量

    10086
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    C语言嵌入式开发的应用

    C 语言汽车电子控制系统开发的主导地位。 2、设备驱动程序 设备驱动程序是嵌入式系统
    发表于 11-21 08:09

    嵌入式系统的定义和应用领域

    嵌入式系统,简而言之,就是一种专为特定设备或装置设计的计算机系统。它们通常配备一个嵌入式处理器,其控制程序被存储ROM
    发表于 11-17 06:49

    嵌入式电力仪表配电系统的应用与选型

    现代配电系统,对电力参数的精确测量、电能计量以及设备运行状态的可靠监控,是保障供电安全、实现能效管理的基础。各类嵌入式电力仪表作为关键测量元件,广泛应用于进线柜、出线柜等场景,为
    的头像 发表于 09-26 09:37 451次阅读
    <b class='flag-5'>嵌入式</b>电力仪表<b class='flag-5'>在</b>配电<b class='flag-5'>系统</b><b class='flag-5'>中</b>的应用与选型

    是德示波器MSOX3052T嵌入式系统的应用

    现代电子系统设计嵌入式系统已成为智能设备与物联网的核心。面对日益复杂的硬件架构与软件算法,调试工具的性能直接决定了产品开发周期与最终可
    的头像 发表于 08-27 17:38 494次阅读
    是德示波器MSOX3052T<b class='flag-5'>在</b><b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b><b class='flag-5'>中</b>的应用

    Python嵌入式系统的应用场景

    你想把你的职业生涯提升到一个新的水平?Python嵌入式系统中正在成为一股不可缺少的新力量。尽管传统上嵌入式开发更多地依赖于C和C++语言,Python的优势在于其简洁的语法、丰富的
    的头像 发表于 03-19 14:10 1189次阅读

    泰克MDO32示波器嵌入式系统调试的关键技术分析

    高性能的混合域示波器,嵌入式系统调试中发挥着关键作用。本文将深入分析泰克MDO32示波器嵌入式系统
    的头像 发表于 03-19 13:51 660次阅读
    泰克MDO32示波器<b class='flag-5'>在</b><b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>调试<b class='flag-5'>中</b>的关键技术分析

    嵌入式系统的代码优化与压缩技术

    。开发人员在编写代码时,应注重代码的模块化和复用性,避免不必要的重复代码编写。 嵌入式系统的代码优化与压缩技术相辅相成,通过合理运用各种优化策略和压缩技术,开发人员能够在有限的资源条件下,打造出高性能、低成本且功能丰富的
    发表于 02-26 15:00

    数字电路嵌入式系统的应用

    随着科技的迅猛发展,嵌入式系统已经成为现代电子产品不可或缺的一部分。从简单的家用电器到复杂的工业控制系统嵌入式系统无处不在。数字电路作为
    的头像 发表于 01-24 09:41 1148次阅读

    CPLD 嵌入式系统的应用

    现代电子设计领域,复杂可编程逻辑器件(CPLD)因其灵活性、成本效益和快速开发周期而在嵌入式系统扮演着重要角色。 1. CPLD简介 CPLD是一种集成电路,其内部包含可编程逻辑块
    的头像 发表于 01-23 09:50 1754次阅读

    PLD嵌入式系统的应用实例

    随着技术的发展,嵌入式系统各个领域扮演着越来越重要的角色。从简单的家用电器到复杂的工业控制系统嵌入式
    的头像 发表于 01-20 09:42 1338次阅读

    MPU嵌入式系统的应用

    一、MPU的基本功能 微处理器单元(MPU)是嵌入式系统的大脑,负责执行程序指令、处理数据和控制其他硬件设备。MPU的基本功能包括: 指令执行:MPU能够从存储器读取指令,解码这些
    的头像 发表于 01-08 09:26 1497次阅读

    差分信号嵌入式系统的应用

    差分信号嵌入式系统的应用十分广泛,特别是需要长距离传输、高抗干扰性以及多设备连接的场景
    的头像 发表于 12-25 18:13 1405次阅读

    LDO嵌入式系统的应用 常见LDO故障及解决方法

    LDO嵌入式系统的应用 LDO(Low Dropout Regulator,低降压线性稳压器)是一种常用的电源管理集成电路,它在嵌入式
    的头像 发表于 12-13 09:08 3078次阅读

    新手怎么学嵌入式?

    嵌入式系统的发展,嵌入式操作系统也变得越来越重要。学习嵌入式操作系统可以帮助你更好地管理
    发表于 12-12 10:51

    嵌入式系统开发与硬件的关系 嵌入式系统开发常见问题解决

    嵌入式系统开发与硬件的关系 嵌入式系统是专为特定应用设计的计算机系统,它们通常嵌入在所控制的设备
    的头像 发表于 12-09 09:38 1466次阅读