CN103309983B - 基于嵌入式数据库SQLite的电力防误系统和方法 - Google Patents
基于嵌入式数据库SQLite的电力防误系统和方法 Download PDFInfo
- Publication number
- CN103309983B CN103309983B CN201310239308.7A CN201310239308A CN103309983B CN 103309983 B CN103309983 B CN 103309983B CN 201310239308 A CN201310239308 A CN 201310239308A CN 103309983 B CN103309983 B CN 103309983B
- Authority
- CN
- China
- Prior art keywords
- database
- sqlite
- type
- information
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于嵌入式数据库SQLite的电力防误系统和方法,属于电力防误系统的应用领域。本发明根据电力防误系统对数据库的要求,设计变电站的各个属性列,并且用SQLite创建符合电力系统的数据库结构,并且把数据库置于手机上,用手机实现了SQLite数据库在电力防误系统中的应用。
Description
技术领域
本发明涉及嵌入式数据库SQLite的设计与应用技术领域,特别涉及一种基于嵌入式数据库SQLite的电力防误系统和方法。
背景技术
数据库技术产生于上世纪60年代后期,其理论与技术发展极为迅速,应用也日益广泛,在当今的信息社会中,它几乎无所不在;其支持的数据模型,已经历了层次、网状、关系和面向对象模型等几个阶段,技术上逐渐走向成熟,在传统的应用领域获得了极大成功。然而它们在现代的工程和实践关键型应用面前却显得软弱无力,面临着新的严峻的挑战,由此导致了实时数据库(real-time database,RTDB)技术的产生和发展。在电力系统方面,如何设计与实现一个较好的实时数据库管理系统,已经成为一个重要课题。
目前,常用的实时数据存储和管理的方法有3种:(1)根据具体的存储器硬件人为地设计存储管理方法。这种方法简单直接,但是软件的可移植性差,对于复杂的算法很难达到高可靠性的要求;(2)利用嵌入式操作系统提供的文件API,以文件的方式实现数据的存储和管理。由于多数嵌入式操作系统(Windows CE、Embedded Linux等)都以独占的方式访问文件,所以这种方法IO开销大,访问效率低,数据共享性较差;(3)借助嵌入式数据库实现数据存储和管理。数据库通过事务来进行调度与并发控制,可有效地对数据进行存取、查询等共享操作,同时借助数据库所具有的安全性和完整性检验等多种安全措施,可确保系统具有较好的整体性能。
SQLite是零配置的,没有独立的数据库引擎,用户请求和数据服务在同一个进程中进行,避免了频繁的进程间通信的额外消耗,所以比传统的客户/服务器数据库系统具有更快的速度,因此,它非常适合那些数据访问频繁,实时性高的系统,SQLite支持绝大多数的SQL92语句,借助API,只要了解基本的数据库操作就可以很好的驾驭它。
由于SQLite数据库具有方便操作的API,适合于数据访问频繁,实时性高的系统,并且电力五防系统需要高的实时性,本发明结合嵌入式数据库SQLite在电力五防系统中的应用,讨论嵌入式数据库的设计与实现方法,能很好地解决上面的问题。
发明内容
本发明目的在于提供一种基于嵌入式数据库SQLite的电力防误系统,针对数据库在电力系统中的应用,设计SQLite数据库的格式,并把这种格式应用于电力防误系统。
本发明解决其技术问题所采用的技术方案是:本方法是一种策略性的方法,在分析电力防误系统中数据库的基础上,理论上推导出数据库的基本结构,并且根据该结构对SQLite数据库进行了设计,使之更好的应用于电力防误系统。
目前的电力防误系统中的数据库应用是,数据库中保存着所有变电站中的重要数据,包括变电站中所有的设备信息,状态信息,逻辑信息。可以选择某个变电站,查看该变电站的所有设备信息,这涉及到数据库的查询(Retrieve);将某个变电站的数据进行删除,这涉及到数据库的删除(Delete);将某个设备的信息进行修改,这涉及到数据库的更新(Update);设备开锁时,根据设备信息,找到该设备的状态信息是分还是合,并且根据分或者是合查看对应的逻辑信息,进而对该操作进行错误及错误类型的分析,这涉及到数据库的各个表的查询(Retrieve)。
SQLite属于典型的“黑盒”程序,几乎所有针对数据库的操作都可以通过API实现,也就是说大多数用户不需要了解其内部细节。SQLite是Android使用的轻量级的数据库,开发Android应用对数据库的操作自然是必不可少。Android提供了一个SQLiteOpenHelper类,可以很方便的操作数据库,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。SQLiteDatabase,重点的是execSQL()和rawQuery()方法。execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语句;rawQuery()方法用于执行select语句。
继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个方法。
onCreate:当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。
onUpgrade:当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。所以,本发明将SQLite数据库应用于电力防误系统。
方法流程:
如图1所示,本发明提出一种基于嵌入式数据库SQLite的电力防误系统,其包括如下步骤:
步骤1:从上位机的磁盘上获取对应BIN文件,BIN文件中含有各种变电站的设备信息,状态信息,逻辑信息等。
.bin文件中存放的一般是可执行的二进制文件,各种设备信息,状态信息,逻辑信息以二进制数据的形式存入.bin文件。
步骤2:手机钥匙的数据库的设计。
针对变电站所涉及的设备信息,逻辑信息,状态信息,来设计数据库的各个表和属性列。
假设有五个数据库,分别是:yingshuiqiao330KV变电站,gucheng220KV变电站,shahu110KV变电站,qianjin35KV变电站,haul110KV变电站,则对应的SQLite数据库的名称是:bisuoyingshuiqiao.db,bisuogucheng.db,bisuoshahu.db,bisuoqianjin.db,bisuohaul.db.每个变电站的三个库的结构(如图3,4)。
SQLite和其他数据库最大的不同就是对数据类型的支持,创建一个表时,可以在CREATE TABLE语句中指定某列的数据类型,而且你可以把任何数据类型放入任何列中。当某个值插入数据库时,SQLite将检查它的类型。如果该类型与关联的列不匹配,则SQLite会尝试将该值转换成该列的类型。如果不能转换,则该值将作为其本身具有的类型存储。比如可以把一个字符串(String)放入INTEGER列。SQLite称这为“弱类型”(manifest typing)。
所以,可以针对每个变电站的三个库的结构特性,设定各个属性的类型。
步骤3:将对应的信息经过通信传入到手机钥匙的数据库中。
每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库—SQLite。它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的少,只需要几百K的内存就够了。SQLite数据库支持大部分操作系统,除了我们在电脑上使用的操作系统之外,很多手机操作系统同样可以运行,比如Android、Windows Mobile、Symbian、Palm等。
所以把SQLite数据库放在手机钥匙中成为可能。
SQLite数据库是个后台数据库,以.db的形式存放在SD存储卡上,在android中,为某个应用程序创建的数据库,只有它可以访问,其它应用程序是不能访问的,如果确实需要查看对应的数据库里的内容,则需要借助专门的SQLite数据库查看软件SQLite ExpertPersonal3.exe(如图2),通过该软件,可以查看该数据库中表的属性类型的设计,存储的数据。
步骤4:SQLite数据库的操作。
在Android中创建和打开一个数据库都可以使用openOrCreateDatabase方法来实现,因为它会自动去检测是否存在这个数据库,如果存在则打开,如果不存在则创建一个数据库:创建成功则返回一个SQLiteDatebase对象,否则抛出异常FileNotFoundException。
下面我们来创建一个名为bisuoyingshuiqiao的数据库,并返回一个SQLiteDatabase对象mSQLiteDatabase。
mSQLiteDatabase=this.openOrCreateDatabase("/sdcard/bisuoyingshuiqiao.db",null);
创建表:(以创建设备表Device为例)通过execSQL方法来执行一条SQL语句。
String CREATE_TABLE="create table Device(iNumber integer primary keyautoincrement,iDeviceNo varchar(8),sDeviceID varchar(8),sDeviceName varchar(256),sLockID varchar(16),sHlockID varchar(32),sLlockID varchar(32),HEepromvarchar(32),"+""LEeprom varchar(32),HInstruction varchar(64),LInstructionvarchar(64),Trans_substationNo Integer)";mSQLiteDatabase.execSQL(CREATE_TABLE);
创建表的时候总要确定一个主键(primary key),这个字段是64位整型,其特点就是自增长功能。当到达最大值时,会搜索该字段未使用的值(某些记录被删除_rowid会被回收),所以要唯一严格增长的自动主键必须加入关键字autoincrement。
有益效果:
1、本发明可以确保系统具有较好的整体性能。
2、本发明的数据库系统具有更快的速度。
附图说明
图1为数据库存储流程图。
图2为数据库内容查看界面示意图。
图3为设备库的属性设计示意图。
图4为逻辑库,状态库的设计示意图。
图5为设备库文件数据以列表的形式进行查看示意图。
图6为设备库查询界面示意图。
图7为设备库修改界面示意图。
具体实施方式
下面结合说明书附图对本技术方案作进一步说明。
本发明提出一种基于嵌入式数据库SQLite的电力防误系统和方法,其包括如下步骤:
(1)从上位机的磁盘上获取对应BIN文件,BIN文件中含有各种变电站的设备信息,状态信息,逻辑信息等。
.bin文件中存放的一般是可执行的二进制文件,各种设备信息,状态信息,逻辑信息以二进制数据的形式存入.bin文件。
(2)手机钥匙的数据库的设计
针对变电站所涉及的设备信息,逻辑信息,状态信息,来设计数据库的各个表(设备表,逻辑表,状态表)和属性列。(如图3,4),并且用SQLite数据库的创建(create)操作为各个列赋予类型和长度信息。
(3)将对应的信息经过通信传入到手机钥匙的数据库中
SQLite数据库是个后台数据库,以.db的形式存放在SD存储卡上。
(4)利用手机验证设计的SQLite数据库
数据库查询:选择某个变电站,进入对数据库的操作界面,选择“库文件查询”,可以选择设备库,逻辑库或者状态库进行查询,查询设备库的结果(如图5),设备库的各个属性列名称以及属性对应的值均显示出来。
数据库查询指定设备:可以输入设备名称,到数据库里搜索对应的记录:因为设备名称大部分是以3开头的,所以在输入框中输入3(如图6左侧所示),查询结果(如图6右侧所示)。
数据库修改:点击查询到的某行信息,出现数据库修改界面(如图7所示),在该界面可以对一系列的设备信息进行修改。
本方法是一种策略性的方法,在分析电力防误系统中数据库的基础上,理论上推导出数据库的基本结构,并且根据该结构对SQLite数据库进行了设计,使之更好的应用于电力防误系统。
目前的电力防误系统中的数据库应用是,数据库中保存着所有变电站中的重要数据,包括变电站中所有的设备信息,状态信息,逻辑信息。可以选择某个变电站,查看该变电站的所有设备信息,这涉及到数据库的查询(Retrieve);将某个变电站的数据进行删除,这涉及到数据库的删除(Delete);将某个设备的信息进行修改,这涉及到数据库的(Update);设备开锁时,根据设备信息,找到该设备的状态信息是分还是合,并且根据分或者是合查看对应的逻辑信息,进而对该操作进行错误及错误类型的分析,这涉及到数据库的各个表的查询(Retrieve)。
SQLite属于典型的“黑盒”程序,几乎所有针对数据库的操作都可以通过API实现,也就是说大多数用户不需要了解其内部细节。SQLite是Android使用的轻量级的数据库,开发Android应用是对数据库的操作自然是必不可少。Android提供了一个SQLiteOpenHelper类来可以很方便的操作数据库,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。SQLiteDatabase,重点的是execSQL()和rawQuery()方法。execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语句;rawQuery()方法用于执行select语句。
继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个方法。
onCreate:当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。
onUpgrade:当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。所以,本发明采用将SQLite数据库应用于电力防误系统。
方法流程:
如图1所示,本发明提出一种基于嵌入式数据库SQLite的电力防误系统,其包括如下步骤:
步骤1:从上位机的磁盘上获取对应BIN文件,BIN文件中含有各种变电站的设备信息,状态信息,逻辑信息等。
.bin文件中存放的一般是可执行的二进制文件,各种设备信息,状态信息,逻辑信息以二进制数据的形式存入.bin文件。
步骤2:手机钥匙的数据库的设计。
针对变电站所涉及的设备信息,逻辑信息,状态信息,来设计数据库的各个表和属性列。
假设有五个数据库,分别是:yingshuiqiao330KV变电站,gucheng220KV变电站,shahu110KV变电站,qianjin 35KV变电站,haul110KV变电站,则对应的SQLite数据库的名称是:bisuoyingshuiqiao.db,bisuogucheng.db,bisuoshahu.db,bisuoqianjin.db,bisuohaul.db.每个变电站的三个库的结构(如图3,4)。
SQLite 和其他数据库最大的不同就是对数据类型的支持,创建一个表时,可以在CREATE TABLE 语句中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。当某个值插入数据库时,SQLite 将检查它的类型。如果该类型与关联的列不匹配,则 SQLite会尝试将该值转换成该列的类型。如果不能转换,则该值将作为其本身具有的类型存储。比如可以把一个字符串(String)放入 INTEGER 列。SQLite 称这为“弱类型”(manifesttyping.)。
所以,可以针对每个变电站的三个库的结构特性,设定各个属性的类型。
步骤3:将对应的信息经过通信传入到手机钥匙的数据库中。
每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库—SQLite。它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了。SQLite数据库支持大部分操作系统,除了我们在电脑上使用的操作系统之外,很多手机操作系统同样可以运行,比如Android、Windows Mobile、Symbian、Palm等。
所以把SQLite数据库放在手机钥匙中成为可能。
SQLite数据库是个后台数据库,以.db的形式存放在SD存储卡上,在android中,为某个应用程序创建的数据库,只有它可以访问,其它应用程序是不能访问的,如果确实需要查看对应的数据库里的内容,则需要借助专门的SQLite数据库查看软件SQLite ExpertPersonal3.exe(如图2),通过该软件,可以查看该数据库中表的属性类型的设计,存储的数据。
步骤4:SQLite数据库的操作。
在Android中创建和打开一个数据库都可以使用openOrCreateDatabase方法来实现,因为它会自动去检测是否存在这个数据库,如果存在则打开,如果不存在则创建一个数据库:创建成功则返回一个SQLiteDatebase对象,否则抛出异常FileNotFoundException。
下面我们来创建一个名为bisuoyingshuiqiao的数据库,并返回一个SQLiteDatabase对象mSQLiteDatabase。
mSQLiteDatabase=this.openOrCreateDatabase("/sdcard/bisuoyingshuiqiao.db",null);
创建表:(以创建设备表Device为例)通过execSQL方法来执行一条SQL语句。
String CREATE_TABLE="create table Device(iNumber integer primary keyautoincrement,iDeviceNo varchar(8),sDeviceID varchar(8),sDeviceName varchar(256),sLockID varchar(16),sHlockID varchar(32),sLlockID varchar(32),HEepromvarchar(32),"+""LEeprom varchar(32),HInstruction varchar(64),LInstructionvarchar(64),Trans_substationNo Integer)";mSQLiteDatabase.execSQL(CREATE_TABLE);
创建表的时候总要确定一个主键(primary key),这个字段是64位整型,其特点就是自增长功能。当到达最大值时,会搜索该字段未使用的值(某些记录被删除_rowid会被回收),所以要唯一严格增长的自动主键必须加入关键字autoincrement。
Claims (1)
1.一种基于SQLite数据库的电力防误系统的设计与实现方法,其特征在于,所述方法包括如下步骤:
步骤1:从上位机的磁盘上获取对应BIN文件;
BIN文件中含有各种变电站的设备信息,状态信息,逻辑信息;
.bin文件中存放的是可执行的二进制文件,各种变电站的设备信息,状态信息,逻辑信息以二进制数据的形式存入.bin文件;
步骤2:基于SQLite电力系统数据库的设计;
针对变电站所涉及的设备信息,逻辑信息,状态信息,来设计数据库的各个表,即设备表、逻辑表、状态表和属性表;
SQLite和其他数据库最大的不同就是对数据类型的支持,创建一个表时,在CREATETABLE语句中指定某列的数据类型,把在CREATE TABLE语句中指定某列的数据类型放入任何列中;当某个值插入数据库时,SQLite将检查它的类型,如果SQLite检查的类型与关联的列的类型不匹配,则SQLite会尝试将该值的类型转换成该列的类型;如果不能转换,则该值将作为其本身具有的类型存储;针对每个变电站的设备信息、状态信息、逻辑信息三个库的结构特性,设定各个属性的类型;
步骤3:基于SQLite电力系统数据库的实现;
用SQLite数据库的创建(create)操作为各个列赋予类型和长度信息;
SQLite数据库是个后台数据库,以.db的形式存放在SD存储卡上,在android中,为某个应用程序创建的数据库,即只有它能够访问,其它应用程序是不能访问;
步骤4:将对应的信息经过通信传入到手机钥匙的数据库中;
在Android中创建和打开一个数据库都使用openOrCreateDatabase方法来实现,因为它会自动去检测是否存在这个数据库,如果存在则打开,如果不存在则创建一个数据库:创建成功则返回一个SQLiteDatebase对象,否则抛出异常FileNotFoundException;
步骤5:利用手机验证设计的SQLite数据库;
数据库查询:选择某个变电站,进入对数据库的操作界面,选择“库文件查询”,或选择设备库,逻辑库或者状态库进行查询,查询设备库的结果,设备库的各个属性列名称以及属性对应的值均显示出来;
数据库查询指定设备:输入设备名称,到数据库里搜索对应的记录;
数据库修改:点击查询到的某行信息,出现数据库修改界面,在该界面对一系列的设备信息进行修改。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310239308.7A CN103309983B (zh) | 2013-06-17 | 2013-06-17 | 基于嵌入式数据库SQLite的电力防误系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310239308.7A CN103309983B (zh) | 2013-06-17 | 2013-06-17 | 基于嵌入式数据库SQLite的电力防误系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103309983A CN103309983A (zh) | 2013-09-18 |
CN103309983B true CN103309983B (zh) | 2017-11-14 |
Family
ID=49135201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310239308.7A Active CN103309983B (zh) | 2013-06-17 | 2013-06-17 | 基于嵌入式数据库SQLite的电力防误系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103309983B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740443A (zh) * | 2016-02-01 | 2016-07-06 | 深圳市盛弘电气股份有限公司 | 一种基于Android数据库的数据管理方法及装置 |
-
2013
- 2013-06-17 CN CN201310239308.7A patent/CN103309983B/zh active Active
Non-Patent Citations (3)
Title |
---|
《基于Android和SQLite的地质数据地图的设计与实现研究》;佘东;《四川文理学院学报》;20120331;第22卷(第2期);第74-76页 * |
《基于SQLite的Android数据库编程》;张恒喜,史争军;《电脑编程技巧与维护》;20111231;第30-31页 * |
《嵌入式数据库SQLite的原理与应用》;唐敏,宋杰;《电脑知识与技术》;20081231(第04期);第600-603页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103309983A (zh) | 2013-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11182404B2 (en) | Data replication technique in database management system | |
CN107391306B (zh) | 一种异构数据库备份文件恢复方法 | |
US10255309B2 (en) | Versioned insert only hash table for in-memory columnar stores | |
US10042552B2 (en) | N-bit compressed versioned column data array for in-memory columnar stores | |
US11354284B2 (en) | System and method for migration of a legacy datastore | |
CN109144994A (zh) | 索引更新方法、系统及相关装置 | |
EP0823092A1 (en) | Modeling of object-oriented database structures, translation to relational database structures, and dynamic searches thereon | |
EP4006740A1 (en) | Method for indexing data in storage engines, and related device | |
CN110799961B (zh) | 在数据库中创建和删除租户的系统和方法 | |
KR102119258B1 (ko) | 데이터베이스 관리 시스템에서의 변경 데이터 캡쳐 구현 기법 | |
US6816853B1 (en) | Method and system for efficiently evaluating a query against partitioned data | |
CN108628885B (zh) | 一种数据同步方法、装置及存储设备 | |
US20230401214A1 (en) | Graph database and methods with improved functionality | |
CN102289513A (zh) | 获取虚拟机内部文件的方法及系统 | |
CN104537012B (zh) | 数据处理方法和装置 | |
US11238035B2 (en) | Personal information indexing for columnar data storage format | |
CN110334545B (zh) | 一种基于sql的权限控制方法、装置和电子设备 | |
CN106802928B (zh) | 电网历史数据管理方法及其系统 | |
Bryla et al. | Oracle Database 12c The Complete Reference | |
CN112912870A (zh) | 租户标识符的转换 | |
US10402385B1 (en) | Database live reindex | |
US20180275961A1 (en) | Method and system for fast data comparison using accelerated and incrementally synchronized cyclic data traversal algorithm | |
CN103309983B (zh) | 基于嵌入式数据库SQLite的电力防误系统和方法 | |
US11574217B2 (en) | Machine learning based identification and classification of database commands | |
CN109902085B (zh) | 一种配置存储结构优化方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |