Adobe AIR中使用Flex连接Sqlite数据库(2)(添加,删除,修改以及语句参数)
来源:互联网 发布:知乎首页 怎么设置 编辑:程序博客网 时间:2024/05/16 00:36
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"代码下载
- Adobe AIR中使用Flex连接Sqlite数据库(2)(添加,删除,修改以及语句参数)
- Adobe AIR中使用Flex连接Sqlite数据库(1)
- Adobe AIR中使用Flex连接Sqlite数据库
- Adobe AIR中使用Flex连接Sqlite数据库
- Adobe AIR中的 SQLite 数据库简介
- Adobe布局Flex AIR
- Adobe Flex/AIR
- Adobe AIR and Flex
- Adobe AIR and Flex
- adobe air for flex(利用blazeds连接远程java服务)
- C# 连接数据库(添加,修改,删除)
- 连接数据库实现删除 添加 修改操作
- Adobe AIR/Flex 资源汇总
- Adobe Flex/AIR 中文站
- JAVA连接MYSQL,使用PreparedStatement 写查询,修改,添加,删除,语句
- FLEX实践—AIR连接SQLITE查询结果数据跟踪
- MySQL数据库中添加用户,用户授权,删除用户以及修改用户的密码
- 【Adobe AIR学习笔记】创建第一个Flex AIR应用程序在MyEclipse中
- 在PC/Windows 7上体验Android应用
- JavaScript计时器的工作原理
- Android 以singleInstance模式加载的Activity怎么接收以putExtra方式传递过来参数
- SOCKEET报错
- 全同态加密
- Adobe AIR中使用Flex连接Sqlite数据库(2)(添加,删除,修改以及语句参数)
- Android应用程序或游戏开发前的一些忠告
- DebugApiSpy的使用
- Packet Tracer实验1
- RDLC报表
- 纪念我渐逝的爱情
- 国际品牌代理集团及品牌公司旗下品牌
- FeatureLayer,FeatureDataset,FeatureClass,Feature几个概念总结
- 全面整理C++面试题