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"
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"
发表评论
-
Flex组件的一些怪问题
2010-08-13 17:55 1022Flex组件的一些怪问题 ... -
tree 单击节点,打开
2010-07-27 13:36 1045var item:Object=Tree(event.c ... -
bitmap,bitmapdata截图
2010-07-09 11:33 1325<?xml version="1.0&q ... -
flex 画虚线
2010-06-30 11:25 1070转:http://dxm1986.iteye.com/blog ... -
flex 特效
2010-06-29 16:36 1138flex特效 [ 20 ... -
textinput restrict
2010-06-17 20:10 1077Flex TextInput 禁止输入特殊字符 < ... -
preloader 美化
2010-06-11 16:56 993loader 主体: package com.di ... -
flex 加载 bmp图片
2010-06-06 10:17 1899<?xml version="1.0& ... -
tooltip巧妙
2010-06-03 17:11 781<?xml version="1.0&qu ... -
flex httpservice 读缓存
2010-06-02 09:36 1046发现谷歌浏览器器也读缓存 没办法 req.url=&q ... -
datagrid显示tooltip方法
2010-05-28 17:19 1310在DataGrid上显示toolTip &l ... -
flex tabnavigator 事件
2010-05-20 09:16 1548最近用到TabNavigator,想在那个tabBar上点 ... -
改变Flex DataGrid 行的背景色
2010-05-18 21:04 1627首先写自定义类 继承自DataGrid package ... -
Adobe AIR应用案例128例
2010-05-18 21:01 681http://www.cnblogs.com/xxcainia ... -
flex 缓冲函数
2010-05-18 20:58 826http://fleksray.org/skins/treec ... -
includelayout 属性
2010-05-18 19:19 921一直被这个问题困扰,就是在设置UI的Visible的时候, ... -
destroyItemEditor
2010-05-17 16:37 817var dg:DataGrid=event.currentTa ... -
cairgorm 详解
2010-05-12 21:27 845转载: http://houwei.iteye.com/bl ... -
flex combobox datagrid
2010-05-06 20:18 910<?xml version="1.0" ... -
flex 自定义控件 用 checkbox
2010-05-06 20:16 1367Flex : 用 CheckBox 做 DataGrid ...
相关推荐
本示例着重于“Air Flex Sqlite通信”,即如何在Adobe AIR应用中使用Flex与SQLite数据库进行交互。 SQLite是一个轻量级的、自包含的、无服务器的SQL数据库引擎,被广泛用于移动应用和嵌入式系统。在Adobe AIR中,...
标题 "flex access sqlite libs" 涉及到的是使用Flex技术访问SQLite数据库库的实践。Flex是一种基于ActionScript的开放源代码框架,主要用于构建富互联网应用程序(Rich Internet Applications,RIA)。SQLite则是一...
标题中的“flex sqlite操作”指的是使用Adobe Flex与SQLite数据库进行交互的技术。Flex是一种基于ActionScript的开放源代码框架,常用于构建富互联网应用程序(RIA)。SQLite则是一个轻量级的、自包含的、无服务器的...
标题中的“flex air sqlite客户端安装软件”指的是一个使用Adobe Flex技术和Adobe AIR运行环境开发的SQLite数据库管理工具。Flex是用于创建富互联网应用程序(RIA)的开源框架,而AIR(Adobe Integrated Runtime)...
"flex4.6 air 异步操作sqlite数据库"的主题着重于如何在Flex 4.6和Adobe AIR环境中实现非阻塞的SQLite数据库操作。在传统的同步操作中,程序会等待数据库操作完成才会执行下一步,这可能导致用户界面冻结,尤其是在...
Flex air 本地程序实例 使用sqlite 学员信息简单查询 本程序分三层 由不同的as(ActionScript)来实现,具体: ConnDb.as 数据助手类,专门用来封装SQLITE的操作,其中也包括了:创建数据库,数据表的方法. Student_...
- **SQLite API**:在Flex中,我们可以使用AS3-SQLite库来访问SQLite数据库,实现CRUD操作。 - **数据绑定**:Flex支持数据绑定,可以将SQLite数据直接绑定到UI组件,简化开发过程。 - **事务处理**:SQLite支持...
总结来说,"Flex4.6手机项目预载外部sqlite数据库"是一个旨在提高用户体验的策略,通过预先准备和复制SQLite数据库到应用存储目录,确保数据的即时可用性。这一方法适用于那些需要大量初始数据或者复杂数据结构的...
《Flex用户信息管理示例:Cairngorm+AIR+SQLite数据库详解》 在现代软件开发中,用户信息管理是一项核心功能,对于任何系统来说都至关重要。本示例以Flex技术为基础,结合Cairngorm框架和Adobe Integrated Runtime ...
Flex应用可以利用本地存储机制,如SQLite数据库或者XML文件,来保存用户的记事内容。 9. **样式和皮肤**:Flex支持样式和皮肤,开发者可以通过定义CSS样式来改变组件的外观,使应用符合特定的设计风格。 10. **...
《Flex-AIR-SQLite操作类及其简要用法》 在Adobe Flex和Adobe AIR应用开发中,SQLite数据库是一种常见的本地数据存储解决方案。SQLite是一个轻量级、无服务器、自包含的SQL数据库引擎,非常适合在桌面和移动应用...
本文将深入探讨Air SQLite工具及其源码,帮助开发者更好地理解和利用这个工具在Flex项目中实现与SQLite数据库的交互。 首先,Air SQLite工具是一个实用的接口,它允许开发者以直观和高效的方式与SQLite数据库进行...
本系列教程将深入探讨SQLite在Adobe Air环境中的应用,通过Flex技术进行实战演示,帮助开发者更好地理解和掌握SQLite的使用。 一、SQLite简介 SQLite是一款开源、自包含、无服务器、零配置、事务性的SQL数据库引擎...
《Flex-AIR-SQLite操作类及其简要用法》 在使用Adobe Integrated Runtime (AIR)进行应用程序开发时,SQLite数据库是一种常见的本地数据存储解决方案。SQLite是一个轻量级、无服务器、自包含的数据库引擎,适合...
HTTPservice是Flex或Adobe AIR中用于从远程服务器获取数据的服务,而XML通常是一种常见的数据交换格式。这个过程可能包括以下步骤: 1. 使用HTTPservice发送HTTP请求到服务器,请求XML数据。 2. 接收XML响应,并...
Flex Air支持与SQLite本地数据库的交互,允许在离线状态下存储和检索数据。文档将阐述如何连接数据库,执行SQL查询,以及数据绑定到UI组件的方法。 七、网络通信 Flex Air可以利用HTTP、HTTPS、Socket和XMLSocket...
这个过程涉及到词法分析和语法分析,通过lex和yacc(或flex和bison)工具生成的词法分析器和语法分析器实现。 接着,编译器将AST转化为一系列的虚拟机指令,这些指令在SQLite3的虚拟机上执行。这个虚拟机使用栈结构...
11. **本地存储和远程数据服务**:学习如何利用Flex4与数据库交互,如使用AMF(Action Message Format)进行远程数据访问,以及SQLite本地数据库的使用。 12. **国际化和本地化**:掌握Flex4中实现多语言支持的方法...
在这个项目中,开发人员利用Flex的强大功能来创建用户界面,同时结合SQLite数据库进行本地数据存储,以实现离线数据操作。 首先,该项目使用SQLite作为数据库系统。SQLite是一款轻量级的关系型数据库,特别适合...