`
Zsb007
  • 浏览: 59304 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论
阅读更多
本章主要总结关系数据库引擎(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);
}




分享到:
评论

相关推荐

    Java代码 MySql导出到SqlLite

    【Java代码 MySql导出到SqlLite】是一种技术实践,它涉及到使用Java编程语言来实现一个功能,该功能能够将MySQL数据库中的数据高效地导出到SQLite数据库文件中。这一过程通常用于数据迁移、备份或者在不同环境之间...

    JAVA中SQLlite数据库BLOB数据类型的存取.docx

    JAVA 中 SQLlite 数据库 BLOB 数据类型的存取 JAVA 中 SQLlite 数据库 BLOB 数据类型的存取是指在 JAVA 语言中使用 SQLlite 数据库来存储和读取大型二进制对象(BLOB),以便实现文件存储和读取的功能。本文将详细...

    Sqlserver、Oracle、MySql、PostgreSql、SqlLite数据库差异

    - **Sqlserver**、**Oracle**、**MySql**、**PostgreSql** 和 **SqlLite** 都提供了丰富的内置函数支持,包括数学、日期时间、字符串处理等多方面功能。 #### 五、分页 分页是数据库中常见的需求之一,不同的...

    sqllite 数据库 jar包

    sqllite 数据库 jar包 java c#sqllite驱动

    java 操作sqllite数据库.rar

    java 操作sqllite的jar包,附带java代码。 package com.nsxx.qp.util; import java.sql.*; public class SqlLite { public static void main(String[] args) { try { //连接SQLite的JDBC Class.forName("org...

    sqllite3 hibernate 方言

    sqllite3 hibernate 方言sqllite3 hibernate 方言sqllite3 hibernate 方言sqllite3 hibernate 方言sqllite3 hibernate 方言sqllite3 hibernate 方言

    delphi的SQLLite 控件

    标签“Delphi SQLLite”进一步强调了这个主题是关于Delphi开发环境和SQLite数据库的结合。通过这样的组合,开发者可以构建高效、可靠的数据库驱动应用程序,而无需依赖大型数据库服务器,特别适合于桌面应用和嵌入式...

    Delphi_SQLLite.rar_DELPHI 数据库_Delphi SQLLite_delphi sqll_sqlite

    本压缩包"Delphi_SQLLite.rar"提供了关于如何在Delphi中使用SQLite数据库的实践教程,这对于那些想要在Delphi应用程序中集成轻量级、高性能数据库功能的开发者来说是一份宝贵的资源。 SQLite是一个开源的嵌入式...

    sqllite3.dll

    在Windows环境中,当你开发或运行一个基于Delphi的程序,如果需要用到SQLite数据库,可能需要 sqllite3.dll 这个库文件。Delphi是Borland公司推出的一种面向对象的 Pascal 编程语言,广泛用于桌面应用开发。通过引用...

    SQLLITE 学习源码分享

    这个“SQLLITE 学习源码分享”项目旨在帮助开发者深入理解SQLite的基本操作,通过实际的代码实践来提升技能。下面将详细介绍SQLite在Android应用中的使用以及涉及的关键知识点。 1. SQLite数据库介绍: SQLite是一...

    sqllite数据库UI工具

    描述中提到的"sqllite小型开发项目数据库"强调了SQLite在小规模项目中的应用。SQLite数据库因其小巧、高效且易于集成的特点,经常被用作单机或移动应用的数据存储解决方案。它支持SQL标准,并且拥有良好的跨平台性,...

    Android 使用sqllite 实现listView上拉加载

    Android 使用sqllite 实现listView上拉加载,简单易懂,适合新手学习sqllite以及自定义listview

    PHP操作SqlLite类

    `sqlLite.class.php`和`lite.php`可能是两个用于PHP操作SQLite数据库的类库或脚本。让我们深入探讨这两个文件可能包含的内容以及PHP操作SQLite的相关知识点。 1. **SQLite数据库连接** 在PHP中,可以使用`sqlite_...

    sqllite3解压即可使用

    这个“sqllite3解压即可使用”的压缩包包含了一个SQLite3的可执行文件sqlite3.exe,这意味着用户可以直接运行这个文件来与SQLite3数据库进行交互,无需复杂的安装过程。 SQLite3的主要特点包括: 1. **轻量级**:...

    SqlLite 授权破解文件

    sqlLite数据库编辑工具,如果需要长期需要授权文件,该下载包提供了破解的授权文件。下载下来只要将文件:license3.key文件放在你的安装目录,并引用该文件即可,引用后,它会提醒你已经注册成功,可以正常使用。

    SQLLite-Official NuGet Packages

    SQLLite-Official NuGet Packages .NET下使用的SQLLite-Official NuGet Packages 版本:3.8.2

    SQLLITE的查询优化

    ### SQLLITE的查询优化 在使用SQLite的过程中,我们往往会遇到查询性能问题,尤其是在处理大量数据时。本文将深入探讨一些提高SQLite查询效率的方法和技术,包括但不限于查询转换、索引利用以及减少不必要的计算等...

    基于django2.0,python3.6,sqllite3,mysql双数据库的企业客服问答系统源码.zip

    基于django2.0,python3.6,sqllite3,mysql双数据库的企业客服问答系统源码 实现功能:1.自动回复机器人。 2.热门问答展示。 3.网站留言。 4.一键评论。 5.交流互动。 6.统计分析。 基于django2.0,python...

    .net操作sqllite帮助类

    。net操作sqllite的帮助类,非常全面基本能用到的方法都有了,需要的可以下载下来拷贝到程序中哦、

Global site tag (gtag.js) - Google Analytics