`

Adobe AIR中使用Flex连接Sqlite数据库(2)(添加,删除,修改以及语句参数)

    博客分类:
  • flex
 
阅读更多

本章主要总结数据库的插入,删除,修改,以及语句参数的使用
本章提到的同步和异步操作,不明白的可以看上篇文章
http://www.cnblogs.com/aierong/archive/2009/01/22/flex_Sqlite_1.html

 

0.SQLStatement类介绍
SQLStatement实例用于针对通过 SQLConnection 实例打开的本地 SQL 数据库执行 SQL 语句。 
SQLStatement实例通过将 SQLConnection 实例设置为 SQLStatement 实例的 sqlConnection 属性的值来链接到 SQLConnection 实例。text 属性用要执行的 SQL 语句的实际文本进行填充。如有必要,可以使用 parameters 属性指定 SQL 语句参数的值,并通过调用 execute() 方法执行该语句。


1.插入数据
同步版本:
import mx.controls.Alert;
private var con:SQLConnection;

private function initApp():void
{
 var file:File = File.applicationStorageDirectory.resolvePath("myTestdb.db")
 
 con = new SQLConnection();
 var stmt:SQLStatement = new SQLStatement();
 
 try
 {
  con.open(file);
  
  stmt.sqlConnection = con; 
  stmt.text="INSERT INTO emp (firstName, lastName, salary) VALUES ('f', 'l', 88)";
  stmt.execute(); 
 }
 catch(error:SQLError)
 {
  Alert.show(error.message);
  Alert.show(error.details);
 }
}
代码说明:
SQLStatement类的实例用于针对通过 SQLConnection 实例打开的本地 SQL 数据库执行 SQL 语句

 

2.得到已插入行的数据库生成的行标识
得到自动增长列的行标识数值
var stmt:SQLStatement = new SQLStatement();
stmt.sqlConnection = con; 
stmt.text="INSERT INTO emp (firstName, lastName, salary) VALUES ('f', 'l', 88)";
stmt.execute();
 
var result:SQLResult = stmt.getResult(); 
var primaryKey:Number = result.lastInsertRowID; 
    
Alert.show(primaryKey.toString());
代码说明:
SQLResult 类提供对为响应 SQL 语句(SQLStatement 实例)执行而返回的数据的访问
lastInsertRowID属性:上次生成的行标识符(由 SQL INSERT 语句生成),如果执行的语句不是 INSERT 语句,则该值为 0。

 

3.语句参数的使用
在多次使用一个 SQL 语句但该语句中的值不同的情况下,最佳方法是使用包括参数的 SQL 语句而不是在 SQL 文本中包括字面值。参数是语句文本中的一个占位符,每次执行语句时都将它替换为实际的值。
参数名称由“:”或“@”字符后跟一个名称组成,例如::itemName  @firstName
还可以使用未命名参数,使用“?”字符表示 SQL 语句中的参数。按照参数在语句中的顺序,每个参数都分配有一个数字索引,数字索引从索引 0(表示第一个参数)开始。

使用参数的优点:
1.性能更佳 
2.显式数据类型指定
3.安全性更高

实例代码:得到自动增长列的行标识数值(异步版本
private var stmt1:SQLStatement;
private function GetlastInsertRowID():void
{
 stmt1 = new SQLStatement();
 stmt1.sqlConnection = con; 
 
 stmt1.text="INSERT INTO emp (firstName, lastName, salary) VALUES (@firstName, @lastName, @salary)";
 stmt1.parameters["@firstName"]="f";
 stmt1.parameters["@lastName"]="l";
 stmt1.parameters["@salary"]=88;  
 
 stmt1.addEventListener(SQLEvent.RESULT,okHandler);
 stmt1.addEventListener(SQLErrorEvent.ERROR,errorHandler);
 stmt1.execute();
}

private function okHandler(evt:SQLEvent):void
{
 Alert.show("插入成功");
 var re:SQLResult= this.stmt1.getResult();
 var id:Number=re.lastInsertRowID;
 Alert.show(id.toString());
}

private function errorHandler(evt:SQLErrorEvent):void
{
 Alert.show("失败");
 Alert.show(evt.error.message);
 Alert.show(evt.error.details);
}
代码说明:
此例题中用到了语句参数@firstName, @lastName, @salary,并分别赋值
要是使用未命名参数,把代码修改如下即可(注意数字索引从0开始):
stmt1.text="INSERT INTO emp (firstName, lastName, salary) VALUES (?, ?, ?)";
stmt1.parameters[0]="f";
stmt1.parameters[1]="l";
stmt1.parameters[2]=88;

 

4.删除操作
private function del():void
{
 var stmt:SQLStatement = new SQLStatement();
 stmt.sqlConnection = con; 
 stmt.text="delete from emp where salary=:salary";
 stmt.parameters[":salary"]=88;
 stmt.execute();
 
 var result:SQLResult = stmt.getResult(); 
    var count:Number = result.rowsAffected;
    
    Alert.show("成功删除"+count.toString()+"行"); 
}
代码说明:
rowsAffected属性:指示受此操作影响的行数
请注意,当相关的 SQL 操作为不带 WHERE 子句的 DELETE 语句时(即该语句删除表中的所有行),rowsAffected 属性始终为 0,而不管删除了多少行。如果您需要知道删除的行数,则可以包括 WHERE 子句 WHERE 1 = 1,在这种情况下,将删除所有行,并且 rowsAffected 属性会精确反映已删除的行数

 

5.修改操作
private function updateData():void
{
 var stmt:SQLStatement = new SQLStatement();
 stmt.sqlConnection = con; 
 stmt.text="update emp set lastName=:lastName where salary=:salary";
 stmt.parameters[":lastName"]="la";
 stmt.parameters[":salary"]=88;
 stmt.execute();
 
 var result:SQLResult = stmt.getResult(); 
    var count:Number = result.rowsAffected;
    
    Alert.show("成功修改"+count.toString()+"行"); 
}
代码说明:
把salary=88的lastName修改为"la"

 

6.代码下载
http://files.cnblogs.com/aierong/Air_Test_SQLite2.rar

分享到:
评论

相关推荐

    Air Flex Sqlite通信

    本示例着重于“Air Flex Sqlite通信”,即如何在Adobe AIR应用中使用Flex与SQLite数据库进行交互。 SQLite是一个轻量级的、自包含的、无服务器的SQL数据库引擎,被广泛用于移动应用和嵌入式系统。在Adobe AIR中,...

    flex4.6 air 异步操作sqlite数据库

    "flex4.6 air 异步操作sqlite数据库"的主题着重于如何在Flex 4.6和Adobe AIR环境中实现非阻塞的SQLite数据库操作。在传统的同步操作中,程序会等待数据库操作完成才会执行下一步,这可能导致用户界面冻结,尤其是在...

    Flex用户信息管理示例(Cairngorm+AIR+sqlite数据库)

    《Flex用户信息管理示例:Cairngorm+AIR+SQLite数据库详解》 在现代软件开发中,用户信息管理是一项核心功能,对于任何系统来说都至关重要。本示例以Flex技术为基础,结合Cairngorm框架和Adobe Integrated Runtime ...

    两个 AIR SQLite 例子

    标题中的“两个 AIR SQLite 例子”指的是使用Adobe Integrated Runtime (AIR) 平台与SQLite数据库交互的两个实际应用示例。SQLite是一个轻量级、自包含的数据库引擎,常用于桌面应用程序,包括那些使用Adobe AIR开发...

    Flex-Air-SQLite操作类及其简要用法.pdf

    在Adobe Flex和Adobe AIR应用开发中,SQLite数据库是一种常见的本地数据存储解决方案。SQLite是一个轻量级、无服务器、自包含的SQL数据库引擎,非常适合在桌面和移动应用程序中使用。本文档介绍了一个名为AIRSQLite...

    action的使用之AIR操作本地数据库sqlite的示例

    标题中的“action的使用之AIR操作本地数据库sqlite的示例”指的是使用ACTION(ActionScript)编程语言,通过Adobe AIR平台来操作本地的SQLite数据库。ACTION通常用于创建富互联网应用程序(RIA),而Adobe AIR则允许...

    flex 实例连载 air 全面

    本教程将通过一系列实例,包括创建数据库、创建表、插入数据、查询数据、更新数据和删除数据,以及事务处理等,全方位展示如何在Flex Air应用中有效利用SQLite。 总结,SQLite在Adobe Air中的应用是提升Flex桌面...

    FLEX AIR 连接local SQL database

    标题"FLEX AIR 连接local SQL database"涉及的是使用Adobe Flex AIR应用与本地SQL数据库进行交互的技术要点。Flex是Adobe开发的一种开源框架,用于构建富互联网应用程序(RIA),而AIR(Air for Desktop)则允许Flex应用...

    Air SQLite工具及源码

    在移动应用开发领域,SQLite是一个非常常见的轻量级数据库,尤其在Adobe Air(ActionScript 3.0的富互联网应用程序运行时)中,SQLite被广泛用于存储和管理应用程序数据。本文将深入探讨Air SQLite工具及其源码,...

    SqliteDev flex air所需数据库

    2. **表管理**:提供创建、修改和删除表的接口,同时支持查看表结构、导入导出数据,以及执行SQL脚本操作。 3. **查询编辑器**:内置了SQL查询编辑器,支持编写复杂的SQL语句,进行数据查询、更新、插入和删除操作。...

    Flex-Air-SQLite操作类及其简要用法.docx

    在使用Adobe Integrated Runtime (AIR)进行应用程序开发时,SQLite数据库是一种常见的本地数据存储解决方案。SQLite是一个轻量级、无服务器、自包含的数据库引擎,适合嵌入式系统,如桌面应用或移动应用。本文将介绍...

    SQL.rar_flex_flex air

    在这个"SQL.rar_flex_flex_air"主题中,我们主要探讨的是如何在Adobe AIR应用中使用本地SQL数据库。 Adobe AIR内置了SQLite数据库引擎,这是一个轻量级、无服务器、自包含的关系型数据库,适合用于桌面应用的数据...

    FLEX下的AIR操作数据库.doc

    在本文档中,我们探讨了如何在Adobe Integrated Runtime (AIR)环境中使用Flex来操作本地数据库。Flex是一个基于ActionScript 3.0的框架,而AIR则允许开发人员创建桌面应用程序,其中可以包括对本地资源如数据库的...

    Flash+Flex+Air移动开发入门经典 pdf

    《flash+flex+air移动开发入门经典——适用于android、ios和blackberry》 第1章 flash、flex和air简介 1 1.1 adobe flash 1 1.2 actionscript 3.0 2 1.2.1 ecmascript 2 1.2.2 关键概念 3 1.3 flex框架 11 ...

    as连数据库示例

    在IT行业中,数据库连接是应用程序开发中的重要环节,特别是在使用ActionScript(AS)进行富互联网应用(RIA)开发时。本示例“as连数据库示例”主要关注如何使用ActionScript 3(AS3)与MySQL数据库进行交互,实现...

    IT技术文章示例

    在AIR应用中实现CRUD(Create、Read、Update、Delete)操作,通常涉及到本地数据库(如SQLite)的使用,以及数据绑定、事件监听等技术。 ### 15. Flex中的弹窗和对话框 Flex提供了多种弹窗和对话框控件,如Alert、...

    flex开发工具的学习.txt

    Flex是一种用于构建Web应用程序的技术,它结合了MXML(标记语言)、ActionScript(编程语言)以及强大的Adobe Flash Player运行环境。Flex使得开发者能够创建出功能强大且视觉效果丰富的用户界面。 ##### 2. 开发...

Global site tag (gtag.js) - Google Analytics