由于项目需要,今天搞了一下sqlite,终于搞定类似于通过本地数据库对登陆程序进行初始化配置,感觉sqlite确实太优秀了。下面是一个关于AIR和sqlite极不错的文章。

Adobe AIR 包括一个基于 SQL 的关系数据库引擎(sqlite),该引擎在运行时中运行,数据以本地方式存储在运行 AIR 应用程序的计算机上的数据库文件中(例如,在计算机的硬盘驱动器上)。由于数据库的运行和数据文件的存储都在本地进行,因此,不管网络连接是否可用,AIR 应用程序都可以使用数据库。

单个 Adobe AIR 本地 SQL 数据库作为单个文件存储在计算机的文件系统中。运行时包括 SQL 数据库引擎,该引擎管理数据库文件的创建和结构化以及操作和检索数据库文件中的数据。运行时不指定在文件系统上存储数据库数据的方式或位置;相反,每个数据库完全存储在单个文件中。您指定在文件系统中存储数据库文件的位置。单个 AIR 应用程序可以访问一个或多个单独的数据库(即单独的数据库文件)。由于运行时将每个数据库作为单个文件存储在文件系统上,因此可以在需要时按照应用程序的设计和操作系统的文件访问约束查找您的数据库。每个用户都可以具有其特定数据的单独数据库文件,或者数据库文件可以由在单个计算机上共享数据的所有应用程序用户访问。由于数据对单个计算机是本地的,因此在不同计算机上的用户之间并不自动共享数据。本地 SQL 数据库引擎未提供对远程数据库或基于服务器的数据库执行 SQL 语句的任何功能。

关于sqlite

关于SQLite的特性:

1. ACID事务

2. 零配置 – 无需安装和管理配置

3. 储存在单一磁盘文件中的一个完整的数据库

4. 数据库文件可以在不同字节顺序的机器间自由的共享

5. 支持数据库大小至2TB

6. 足够小, 大致3万行C代码, 250K

7. 比一些流行的数据库在大部分普通数据库操作要快

8. 简单, 轻松的API

9. 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定

10. 良好注释的源代码, 并且有着90%以上的测试覆盖率

11. 独立: 没有额外依赖

12. Source完全的Open, 你可以用于任何用途, 包括出售它

13. 支持多种开发语言,C, PHP, Perl, Java, ASP.NET,Python

更详细情况可以参考以下站点:

http://www.sqlite.org/

http://www.sqlite.com.cn/

本地 SQL 数据库的用途

AIR 本地 SQL 数据库功能可以用于将应用程序数据存储在用户的本地计算机上的任何目的。Adobe AIR 包括在本地存储数据的几种机制,各机制具有不同的优点。以下是本地 SQL 数据库在 AIR 应用程序中的一些可能用途:

1.对于面向数据的应用程序(例如通讯簿),数据库可以用于存储主应用程序数据。

2.对于面向文档的应用程序(用户创建要保存并可能共享的文档),可以在用户指定的位置将每个文档另存为数据库文件。(但是,请注意,任何 AIR 应用程序都能够打开数据库文件,因此对于潜在敏感的文档,建议使用单独的加密机制。)

3.对于支持网络的应用程序,数据库可以用于存储应用程序数据的本地缓存,或者在网络连接不可用时暂时存储数据。可以创建一种将本地数据库与网络数据存储同步的机制。

4.对于任何应用程序,数据库都可以用于存储单个用户的应用程序设置,例如用户选项或应用程序信息(如窗口大小和位置)。

关于同步和异步执行模式

1.编写代码以处理本地 SQL 数据库时,会指定以两种执行模式之一执行数据库操作:异步或同步执行模式。通常,代码示例说明如何以这两种方式执行每个操作,以便您可以使用最适合您需求的示例。

2.在异步执行模式中,为运行时提供一个指令,运行时将在请求的操作完成或失败时调度事件。首先,通知数据库引擎执行操作。在应用程序继续运行的同时,数据库引擎在后台工作。最后,完成操作时(或者它失败时),数据库引擎调度事件。由事件触发的代码执行后续操作。此方法具有一个重要的优点:运行时在后台执行数据库操作,同时主应用程序代码继续执行。如果数据库操作花费大量的时间,则应用程序继续运行。最重要的是,用户可以继续与其交互,而屏幕不会冻结。但是,与其它代码相比,编写异步操作代码可能更加复杂。在必须将多个相关的操作分配给各个事件侦听器方法的情况下,通常会出现此复杂性。

3.从概念上说,将操作作为单个步骤序列(一组同步操作,而不是分到几个事件侦听器方法中的一组操作)进行编码更为简单。除了异步数据库操作外,Adobe AIR 还允许您同步执行数据库操作。在同步执行模式中,操作不在后台运行。相反,它们以与所有其它应用程序代码相同的执行序列运行。通知数据库引擎执行操作。然后,代码在数据库引擎工作时暂停。完成操作后,继续执行下一行代码。

4.异步还是同步执行操作是在 SQLConnection 级别上设置的。使用单个数据库连接,无法同步执行某些操作或语句,同时异步执行其它操作或语句。通过调用 SQLConnection 方法打开数据库,可以指定 SQLConnection 是在同步还是异步执行模式下操作。如果调用 SQLConnection.open(),则连接在同步执行模式下操作;如果调用 SQLConnection.openAsync(),则连接在异步执行模式下操作。使用 open() 或 openAsync() 将 SQLConnection 实例连接到数据库后,除非先关闭再重新打开到数据库的连接,否则该实例将固定为同步或异步执行模式。

创建数据库

若要创建数据库文件,请首先创建 SQLConnection 实例。调用其 open() 方法在同步执行模式下打开它,或者调用其 openAsync() 方法在异步执行模式下打开它。open() 和 openAsync() 方法用于打开到数据库的连接。如果传递的 File 实例引用 reference 参数(第一个参数)的不存在的文件位置,则 open() 或 openAsync() 方法将在该文件位置创建一个数据库文件,并打开到新创建的数据库的连接。

不管是调用 open() 方法还是 openAsync() 方法创建数据库,数据库文件的名称都可以是具有任何文件扩展名的任何有效文件名。如果调用 reference 参数为 null 的 open() 或 openAsync() 方法,则将创建新的内存中数据库,而不是在磁盘上创建数据库文件。

以下代码清单说明使用异步执行模式创建数据库文件(新数据库)的过程,数据库文件保存在应用程序的存储目录中,其文件名为“myTestdb.db”:

import mx.controls.Alert;

private var con:SQLConnection;

private function initApp():void

{

var file:File = File.applicationStorageDirectory.resolvePath("myTestdb.db")

con = new SQLConnection();

//在 openAsync() 方法调用操作成功完成时调度

con.addEventListener(SQLEvent.OPEN,openHandler);

//SQLConnection 对象的异步操作导致错误时调度

con.addEventListener(SQLErrorEvent.ERROR,errorHandler);

con.openAsync(file);

}

private function openHandler(evt:SQLEvent):void

{

Alert.show("成功完成");

}

private function errorHandler(evt:SQLErrorEvent):void

{

Alert.show("失败");

Alert.show(evt.error.message);

Alert.show(evt.error.details);

}

要同步执行操作,请在使用 SQLConnection 实例打开数据库连接时,调用 open() 方法。以下代码说明如何创建和打开同步执行其操作的 SQLConnection 实例:

import mx.controls.Alert;

private var con:SQLConnection;

private function initApp():void

{

var file:File = File.applicationStorageDirectory.resolvePath("myTestdb.db")

con = new SQLConnection();

try

{

con.open(file);

Alert.show("成功完成");

}

catch(error:SQLError)

{

Alert.show(error.message);

Alert.show(error.details);

}

}

创建数据库表

以下使用异步执行模式在现有数据库文件中创建一个名为“emp”的表。

import mx.controls.Alert;

private var con:SQLConnection;

private var createStmt:SQLStatement;

private function initApp():void

{

var file:File = File.applicationStorageDirectory.resolvePath("myTestdb.db")

con = new SQLConnection();

//在 openAsync() 方法调用操作成功完成时调度

con.addEventListener(SQLEvent.OPEN,openHandler);

//SQLConnection 对象的异步操作导致错误时调度

con.addEventListener(SQLErrorEvent.ERROR,errorHandler);

con.openAsync(file);

}

private function createResult(event:SQLEvent):void

{

Alert.show("表创建");

}

private function createError(event:SQLErrorEvent):void

{

Alert.show("Error message:", event.error.message);

Alert.show("Details:", event.error.details);

}

private function openHandler(evt:SQLEvent):void

{

Alert.show("成功完成");

createStmt = new SQLStatement();

createStmt.sqlConnection = con;

var sql:String =

"CREATE TABLE IF NOT EXISTS emp (" +

"    empId INTEGER PRIMARY KEY AUTOINCREMENT, " +

"    firstName TEXT, " +

"    lastName TEXT, " +

"    salary NUMERIC CHECK (salary > 0)" +

")";

createStmt.text = sql;

createStmt.addEventListener(SQLEvent.RESULT, createResult);

createStmt.addEventListener(SQLErrorEvent.ERROR, createError);

createStmt.execute();

}

private function errorHandler(evt:SQLErrorEvent):void

{

Alert.show("失败");

Alert.show(evt.error.message);

Alert.show(evt.error.details);

}

以下代码使用同步执行模式在现有数据库文件中创建一个名为“emp”的表

import mx.controls.Alert;

private var con:SQLConnection;

private var createStmt:SQLStatement;

private function initApp():void

{

var file:File = File.applicationStorageDirectory.resolvePath("myTestdb.db")

con = new SQLConnection();

createStmt = new SQLStatement();

try

{

con.open(file);

createStmt.sqlConnection = con;

var sql:String =

"CREATE TABLE IF NOT EXISTS emp (" +

"    empId INTEGER PRIMARY KEY AUTOINCREMENT, " +

"    firstName TEXT, " +

"    lastName TEXT, " +

"    salary NUMERIC CHECK (salary > 0)" +

")";

createStmt.text = sql;

createStmt.execute();

Alert.show("成功完成");

}

catch(error:SQLError)

{

Alert.show(error.message);

Alert.show(error.details);

}

}

本文转自:http://jsc0754.blog.163.com/blog/static/10389224520096308922522/

Adobe AIR中的 SQLite 数据库简介相关推荐

  1. java中删除sqlite数据库语句_sqlite sql创建数据库语句

    iOS开发数据库篇-SQLite常用的函数 一.简单说明 1.打开数据库 int sqlite3_open( const char *filename, // 数据库的文件路径 sqlite3 **p ...

  2. 在 Android 应用程序中使用 SQLite 数据库以及怎么用

    part one : android SQLite 简单介绍 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库.它支持 SQL 语言,而且仅仅利用非常少的内存就有非常好的性能.此外它还是开 ...

  3. Android中实现SQLite数据库CRUD操作的两种方式

    Android中实现SQLite数据库CRUD操作的两种方式 SQLite是一款轻量级的关系型数据库,具有运行速度.占用资源少的特点.通常只需要几百KB的内存就够了,因此特别适合在移动设备上使用.SQ ...

  4. uwp连接mysql数据库_在 UWP 应用中使用 SQLite 数据库

    在 UWP 应用中使用 SQLite 数据库Use a SQLite database in a UWP app 06/26/2020 本文内容 可以使用 SQLite 在用户设备上的轻量级数据库中存 ...

  5. 在 Adobe AIR 中为不同屏幕尺寸的多种设备提供支持

    http://www.adobe.com/cn/devnet/air/articles/multiple-screen-sizes.html 无论是改编原本在浏览器 Flash Player 中运行的 ...

  6. android属于数据库管理系统,详细谈谈Android系统中的SQLite数据库的应用

    数据库是按照数据结构来组织.存储和管理数据的仓库,而在信息话的社会,数据库又不单单仅限与数据的相关内容,现在数据库技术是管理信息系统.办公自动化系统.决策支持系统等各类信息系统的核心部分,而SQL是结 ...

  7. 安卓视频开发 mysql_在Android应用中使用SQLite数据库(传智播客视频笔记)

    在Android应用中使用SQLite数据库 应用生成的数据库文件保存为/data/data/应用包名/databases/name.db,生成的文件可用SQLite Expert打开 (name是自 ...

  8. [SQLite]浅析其一——SQLite数据库简介

    SQLite数据库简述 1.1. 介绍 节选并翻译自官网介绍: SQLite是一个进程内的库,实现了自给自足的.无服务器的.零配置的.事务性的 SQL 数据库引擎.其代码完全开源,可供个人或商业完全免 ...

  9. Android中关于SQLite数据库的一些知识

    使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库-SQLite,SQLite3支持 NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本 ...

最新文章

  1. ASP.NET2.0-防止同一用户同时登陆
  2. python dataframe 计算上下两行的差值_用Python进行数据清洗!
  3. 基于StringTemplate的视图
  4. IDEA----破解
  5. 012 动态调试smali代码
  6. SAP业务测评之库存预留
  7. 新增方法java_Java8_map新增方法
  8. 【笔记】jQuery源码(节点遍历)
  9. 【LeetCode】剑指 Offer 14. 剪绳子
  10. 【黑马JS笔记】JavaScript基础语法
  11. halcon 深度学习标注_Halcon教程之-HALCON 18.05正式发布,深度学习不再需要GPU
  12. Mark Text快捷键
  13. 计算机网络工具软件包括,计算机网络常用工具软件
  14. html5调用 扫码枪,js读取usb扫码枪数据功能代码实现
  15. 判断一个数是否是素数
  16. 华为:拿什么留住员工
  17. 旅游网站毕业设计,旅游网站网页设计设计源码,旅游网站设计毕业论文
  18. LuoguP2123 皇后游戏
  19. 【ESP 保姆级教程】疯狂Node.js服务器篇 ——案例:ESP8266 + MQ3酒精传感器 + NodeJs本地服务 + 文件存储数据
  20. 安装Windows和rhel/Centos双系统

热门文章

  1. 解决Failure to find org.glassfish:javax.el:pom:3.0.1-b06-SNAPSHOT
  2. 慕课乐学python编程题_中国大学mooc慕课_Python编程基础_2020章节测试答案
  3. 【论文解读+实践】YOLOP 全景驾驶感知 同时处理三大视觉任务
  4. 人眼视觉介绍,像素,分辨率,帧率,码率,清晰度关系
  5. 计算机通过什么测试达到人工智能,计算机通过什么测试达到人工智能
  6. 大数据所具备的四个特点,清楚知道大数据原理原则
  7. XDOJ-1098-突击数论前的xry111(筛选法求欧拉函数)
  8. 项目经理应该做什么? ---李俊山
  9. java stax xml_Java代码:使用StAX创建xml文件
  10. 3D制图软件中如何创建钣金件?