Adobe AIR中使用Flex连接Sqlite数据库(1)(创建数据库和表,以及同步和异步执行模式)
系列文章导航
- Adobe AIR中使用Flex连接Sqlite数据库(1)(创建数据库和表)
- Adobe AIR中使用Flex连接Sqlite数据库(2)(添加,删除,修改以及语句参数)
- Adobe AIR中使用Flex连接Sqlite数据库(3)(查询)
- Adobe AIR中使用Flex连接Sqlite数据库(4)(事务)
- Flex,Fms3相关文章索引
- Fms3和Flex打造在线多人视频会议和视频聊天(附原代码)
- 免费美女视频聊天,多人视频会议功能加强版本(Fms3和Flex开发(附源码))
本章主要总结关系数据库引擎(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://files.cnblogs.com/aierong/Air_Test_SQLite.rar
Adobe AIR中使用Flex连接Sqlite数据库(1)(创建数据库和表,以及同步和异步执行模式)的更多相关文章
- Adobe AIR 中为不同尺寸和分辨率屏幕适配
在 Adobe AIR 中为不同屏幕尺寸的多种设备提供支持 http://www.adobe.com/cn/devnet/air/articles/multiple-screen-sizes.html ...
- [AIR] 在 Adobe AIR 中为不同屏幕尺寸的多种设备提供支持
转自:http://www.adobe.com/cn/devnet/air/articles/multiple-screen-sizes.html 无论是改编原本在浏览器 Flash Player 中 ...
- windows平台使用MongoDB shell 来连接 MongoDB 服务器并创建数据库
windows平台使用MongoDB shell 来连接 MongoDB 服务器并创建数据库 命令行进入MongoDB的bin目录运行mongod.exe mongod --dbpath c:\dat ...
- android sqlite 一次创建多个表
package com.yangguangfu.database; import android.content.Context; import android.database.sqlite.SQL ...
- input屏蔽历史记录 ;function($,undefined) 前面的分号是什么用处 JSON 和 JSONP 两兄弟 document.body.scrollTop与document.documentElement.scrollTop兼容 URL中的# 网站性能优化 前端必知的ajax 简单理解同步与异步 那些年,我们被耍过的bug——has
input屏蔽历史记录 设置input的扩展属性autocomplete 为off即可 ;function($,undefined) 前面的分号是什么用处 ;(function($){$.ex ...
- 创建数据库,创建数据库表,例子。MySQL语句
1.创建数据库: 创建的代码:create 数据库的代码:database 数据库表名:随便起,只要自己记住就行.test create database test; 2.删除数据库: 删 ...
- mysql 命令行查看数据库、创建数据库、选择数据库、删除数据库
mysql数据库命名规则(标识符规则): 不能和已存在的命名重名: 由大小写字母.数据.下划线.@.# 和 $ 符号组成: 首字母不能是数字和$符. 不允许有空格和特殊字符. 不允许是mysql的保留 ...
- Python网络编程中的服务器架构(负载均衡、单线程、多线程和同步、异步等)
这篇文章主要介绍服务器架构. 网络服务需要面对两个挑战. 第一个问题是核心挑战,要编写出能够正确处理请求并构造合适响应的代码. 第二个挑战是如何将网络代码部署到随系统自动启动的Windows服务或者是 ...
- Adobe AIR and Flex - 保存序列化对象文件(译)
创建任何桌面应用程序几乎总是需要在本地存储数据,通过Adobe AIR我们有几下面几个选择,一个是我们能够使用内置的 SQLite 数据库支持,对于少量的数据这是大材小用了.另外一个选择是我们通过把数 ...
随机推荐
- 实例:用类来写一个 memcached 启动脚本
[root@localhost ~]$ yum install -y memcached #!/usr/bin/env python #-*- coding:utf-8 -*- import os i ...
- 基于Cocos2d-x学习OpenGL ES 2.0系列——OpenGL ES渲染之Shader准备(7)
Cocos2d-x底层图形绘制是使用OpenGL ES协议的.OpenGL ES是什么呢? OpenGL ES(OpenGl for Embedded System)是OpenGL三维图形API的子集 ...
- AVL 平衡树
AVL是一种平衡二叉树,它通过对二叉搜索树中的节点进行旋转使得二叉搜索树达到平衡.AVL在所有的平衡二叉搜索树中具有最高的平衡性. 定义 平衡二叉树或者为空树或者为满足如下性质的二叉搜索树: 左右子树 ...
- 【PHP】 解决报错:Error: php71w-common conflicts with php-common-5.4.16-43.el7_4.x86_64
背景: 手动安装的PHP7 环境 问题:在安装扩展的时候.无论输入 php-* 来安装任何扩展.都会报错 Error: php71w-common conflicts with php-common ...
- Docker源码分析(六):Docker Daemon网络
1. 前言 Docker作为一个开源的轻量级虚拟化容器引擎技术,已然给云计算领域带来了新的发展模式.Docker借助容器技术彻底释放了轻量级虚拟化技术的威力,让容器的伸缩.应用的运行都变得前所未有的方 ...
- 使用openssl生成RSA公钥和私钥对
在ubuntu上要使用openssl的话需要先进行安装,命令如下: sudo apt-get install openssl 安装完成就可以使用openssl了. 首先需要进入openssl的交互界面 ...
- 如何学习 cocos2d-x ?
发表于 04/23/2014 作者 zrong — 24 条评论 ↓ 11,687 次查看 本站文章除注明转载外,均为本站原创或者翻译. 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处 ...
- c# Use NAudio Library to Convert MP3 audio into WAV audio(将Mp3格式转换成Wav格式)
Have you been in need of converting mp3 audios to wav audios? If so, the skill in this article prov ...
- java对象转化成String类型
在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object#toString(),(String)要转换的对象,St ...
- create sequence
create sequence seq_test start with 3 increment by 1 minvalue 1 --范围-(1027 -1) maxvalue 99999999999 ...