CN103309983B - 基于嵌入式数据库SQLite的电力防误系统和方法 - Google Patents

基于嵌入式数据库SQLite的电力防误系统和方法 Download PDF

Info

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
Application number
CN201310239308.7A
Other languages
English (en)
Other versions
CN103309983A (zh
Inventor
周宁宁
杨晓琳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Post and Telecommunication University
Original Assignee
Nanjing Post and Telecommunication University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing Post and Telecommunication University filed Critical Nanjing Post and Telecommunication University
Priority to CN201310239308.7A priority Critical patent/CN103309983B/zh
Publication of CN103309983A publication Critical patent/CN103309983A/zh
Application granted granted Critical
Publication of CN103309983B publication Critical patent/CN103309983B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于嵌入式数据库SQLite的电力防误系统和方法,属于电力防误系统的应用领域。本发明根据电力防误系统对数据库的要求,设计变电站的各个属性列,并且用SQLite创建符合电力系统的数据库结构,并且把数据库置于手机上,用手机实现了SQLite数据库在电力防误系统中的应用。

Description

基于嵌入式数据库SQLite的电力防误系统和方法
技术领域
本发明涉及嵌入式数据库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数据库;
数据库查询:选择某个变电站,进入对数据库的操作界面,选择“库文件查询”,或选择设备库,逻辑库或者状态库进行查询,查询设备库的结果,设备库的各个属性列名称以及属性对应的值均显示出来;
数据库查询指定设备:输入设备名称,到数据库里搜索对应的记录;
数据库修改:点击查询到的某行信息,出现数据库修改界面,在该界面对一系列的设备信息进行修改。
CN201310239308.7A 2013-06-17 2013-06-17 基于嵌入式数据库SQLite的电力防误系统和方法 Active CN103309983B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105740443A (zh) * 2016-02-01 2016-07-06 深圳市盛弘电气股份有限公司 一种基于Android数据库的数据管理方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
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