Adobe AIR中使用Flex连接Sqlite数据库(3)(查询)
本章主要总结表的查询 1.查询
同步版本:
- private function query():void
- {
- var stmt:SQLStatement = new SQLStatement();
- stmt.sqlConnection = con;
- stmt.text = "select empId,firstName,lastName,salary from emp";
- stmt.execute();
-
- var result:SQLResult = stmt.getResult();
-
- if ( result.data!=null )
- {
- var numResults:int =result.data.length;
-
- for (var i:int = 0; i < numResults; i++)
- {
- var row:Object = result.data[i];
- var output:String = "empId: " + row.empId;
- output += "; firstName: " + row.firstName;
- output += "; lastName: " + row.lastName;
- output += "; salary: " + row.salary;
-
- Alert.show(output);
- }
- }
- }
复制代码
代码说明:
getResult ()方法:执行结果的SQLResult对象的访问
SQLResult的data属性:执行语句而返回的数据。如果某一语句不返回任何数据,则此属性为 null。这就是本代码需要判断是否为空的目的。
2.查询部分结果
默认情况下,执行 SELECT 语句会一次检索结果集的所有行,有时我们需要查询第1行怎么办?
查询第1行的异步版本实例代码如下:
- private var responder:Responder;
- private var stmt:SQLStatement;
- private function querytop1():void
- {
- stmt = new SQLStatement();
- stmt.sqlConnection = con;
- stmt.text = "select empId,firstName,lastName,salary from emp where firstName=:firstName";
- stmt.parameters[":firstName"]="f";
- responder= new Responder(resultHandler, errorHandler);
- stmt.execute(1,responder);
- }
- private function resultHandler(result:SQLResult):void
- {
- if ( result.data!=null )
- {
- var numResults:int =result.data.length;
-
- for (var i:int = 0; i < numResults; i++)
- {
- var row:Object = result.data[i];
- var output:String = "empId: " + row.empId;
- output += "; firstName: " + row.firstName;
- output += "; lastName: " + row.lastName;
- output += "; salary: " + row.salary;
-
- Alert.show(output);
- }
- }
- }
- private function errorHandler(error:SQLError):void
- {
- Alert.show(error.message);
- Alert.show(error.details);
- }
复制代码
代码说明:
execute () 方法参数说明:
第1个参数:此值指示该语句一次返回的行数。默认值为 -1,指示一次返回所有结果行,
第2个参数:一个Responder对象,指定操作成功或失败时要调用的方法。
实际在本例中,也可以不用Responder对象,而用事件侦听器执行SQLStatement,以确定语句的执行何时完成或失败
- stmt.addEventListener(SQLEvent.RESULT,resultHandler);
- stmt.addEventListener(SQLErrorEvent.ERROR,errorHandler);
复制代码
具体代码实现可以参照以前的文章
3.代码下载
http://files.cnblogs.com/aierong/Air_Test_SQLite3.rar
http://www.cnblogs.com/aierong/archive/2009/01/23/flex_air_Sqlite_Query.html
|