flex sqlite基本用法

页面

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
                       xmlns:s="library://ns.adobe.com/flex/spark"
                       xmlns:mx="library://ns.adobe.com/flex/mx">
    <fx:Script>
        <![CDATA[
            import sqlTest.SQLTest;
            protected function button1_clickHandler(event:MouseEvent):void{
                var sql:SQLTest = new SQLTest();
            }
        ]]>
    </fx:Script>
    <s:Button x="192" y="221" label="按钮" click="button1_clickHandler(event)"/>
</s:WindowedApplication>

sqlite类

package sqlTest{
    import flash.data.SQLConnection;
    import flash.data.SQLResult;
    import flash.data.SQLStatement;
    import flash.events.SQLErrorEvent;
    import flash.events.SQLEvent;
    import flash.filesystem.File;
    import flash.net.Responder;

    import mx.controls.Alert;

    public class SQLTest{
        private var con:SQLConnection;
        private var stmt:SQLStatement;
        private var creatTableSQL:String ="CREATE TABLE IF NOT EXISTS user ( "+
                                        "userId INTEGER PRIMARY KEY AUTOINCREMENT, " +
                                        "userName TEXT, " +
                                        "password TEXT )"; 

        private var insertSQL:String = "INSERT INTO user (userName, password) VALUES ('admin', 'admin')";
        //语句参数       :itemName  @firstName 或者  ?  使用问号时只能用索引方式设值 索引从0开始
        private var insertSQLparams:String = "INSERT INTO user (userName, password) VALUES (:userName, @password)";
        private var deleteSQLparams:String = "delete from user where userName=:userName"
        private var updateSQLparams:String = "update user set password= ? where userName= ?";
        private var selectSQL:String = "select userName,password from user"
        public function SQLTest(){
            initApp();

        }
        private function initApp():void{
            var file:File = File.applicationStorageDirectory.resolvePath("MySQLite.sqlite")
            con = new SQLConnection();
            //异步
//          asyncOpen(con,file);
            //同步
            open(con,file);
        }

        private function open(con:SQLConnection,file:File):void{
            try{
                //若参数为空则建立在内存上 若文件不存在则自动创建
                con.open(file);
                con.begin();
                Alert.show("Create/open database finished");
                stmt = new SQLStatement();
                stmt.sqlConnection = con;
                //1.create table
                stmt.text = creatTableSQL;
                //2.insert data
                stmt.text = insertSQL;
                //带占位符insert
//              stmt.text = insertSQLparams;
//              stmt.parameters[":userName"] = "aaa";
//              stmt.parameters["@password"] = "admin";
                //3.delete
//              stmt.text = deleteSQLparams;
//              stmt.parameters[0] = "admin";
                //4.update
//              stmt.text = updateSQLparams;
//              stmt.parameters[0] = "aaa";
//              stmt.parameters[1] = "aaa";
                //5.select
//              stmt.text = selectSQL;
//              var responder:Responder = new Responder("resultHandler", "errorHandler");
//              stmt.execute(1,responder);//此处可以指定返回行数 ,若不使用responder则添加2个监听器如下
//              stmt.addEventListener(SQLEvent.RESULT,resultHandler);
//              stmt.addEventListener(SQLErrorEvent.ERROR,errorHandler);
                stmt.execute();
                var result:SQLResult = stmt.getResult();
                //row
                if(result!=null){
                    //上一次INSERT 操作的行标识符  如果执行的语句不是 INSERT 语句,则该值为 0
                    var row:Number = result.lastInsertRowID;
                     row = result.rowsAffected;
                    Alert.show("Row"+row.toString());
                }
                //data
                if(result.data!=null){
                    var numResults:int =result.data.length;

                    for (var i:int = 0; i < numResults; i++) {
                        var re:Object = result.data[i];
                        var output:String = "userName: " + re.userName;
                        output += "; password: " + re.password;
                        Alert.show(output);
                    }
                }

                Alert.show("finished");
                con.commit();
            }catch(error:SQLErrorEvent){
                con.rollback();
                errorHandler(error);
            }
        }

        private function asyncOpen(con:SQLConnection,file:File):void{
            // openAsync SQLConnection 对象操作导致错误时调度
            con.addEventListener(SQLErrorEvent.ERROR,errorHandler);
            // openAsync 方法调用操作成功完成时调度
            con.addEventListener(SQLEvent.OPEN,openHandler);
            //若参数为空则建立在内存上 若文件不存在则自动创建
            con.openAsync(file);
        }

        private function openHandler(evt:SQLEvent):void{
            Alert.show("Create/open database finished");
            stmt = new SQLStatement();
            stmt.sqlConnection = con;
            stmt.text = creatTableSQL;
            stmt.addEventListener(SQLEvent.RESULT, createResult);
            stmt.addEventListener(SQLErrorEvent.ERROR, createError);
            stmt.execute();
        }

        private function errorHandler(evt:SQLErrorEvent):void{
            Alert.show("SQLErrorEvent");
            Alert.show(evt.error.message);
            Alert.show(evt.error.details);
        }

        private function createResult(event:SQLEvent):void {
            Alert.show("create table finished");
        }

        private function createError(event:SQLErrorEvent):void {
            Alert.show("Error message:", event.error.message);
            Alert.show("Details:", event.error.details);
        }
    }
}

flex sqlite基本用法的更多相关文章

  1. Flex 布局相关用法

    前言: 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中 就不容易实现. 2009年,W3C提出了 ...

  2. Flex的基础用法【转】

    //获得屏幕的分辨率 var x:Number=Capabilities.screenResolutionX; var y:Number=Capabilities.screenResolutionY; ...

  3. flex sqlite 操作blog 二进制数据

    1,              通常的操作方式: 首先我们建立表:CREATE TABLE "pages" ("id" varchar, "data& ...

  4. Android 操作SQLite基本用法

    一.SQLite的介绍 1.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入  式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的 ...

  5. sqlite query用法

    本文转自http://blog.csdn.net/double2hao/article/details/50281273,在此感谢作者 query(table, columns, selection, ...

  6. 数据持久化之sqlite基本用法

    一.ACID 即原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability). 原子性:整个事务中的所有操作,要么全部完成,要么全部不完 ...

  7. sqlite基本用法

    DDL-数据定义语言 CREATE 创建一个新的表,一个表的视图,或者数据库中的其他对象. ALTER 修改数据库中的某个已有的数据库对象,比如一个表. DROP 删除整个表,或者表的视图,或者数据库 ...

  8. flex布局常见用法小结

    1,display:flex 这个在父容器中声明: 2,flex-direction:row / column 默认为横向,也在父容器中设置,定义flex布局的主轴方向:一条轴为主轴,那么另一条轴自然 ...

  9. Android SQLite基本用法

    SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLit ...

随机推荐

  1. springMVC---简介

    SpringMVC介绍 为什么要使用springMVC? 很多应用程序的问题在于处理业务数据和显示业务数据的视图的对象之间存在紧密耦合.通常,更新业务对象的命令都是从视图本身发起的,使视图对任何业务对 ...

  2. python 基本数据类型set

    set 是一个无序且不重复的序列 set 是一个无序且不重复的序列 set 不允许重复的集合.set不允许重复的序列 1.创建 s=set() #创建空集合只能用这种方法 s={11,222,233, ...

  3. SparkMLlib学习分类算法之逻辑回归算法

    SparkMLlib学习分类算法之逻辑回归算法 (一),逻辑回归算法的概念(参考网址:http://blog.csdn.net/sinat_33761963/article/details/51693 ...

  4. 【设计模式】之开闭原则(OCP)

    开闭原则是面向对象设计的一个重要原则,其定义如下: 开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放,对修改关闭.即软件实体应尽量在不修改原有代码的情况下进 ...

  5. VUE依赖webpack分别给开发环境和生产环境配置不同的常量值并在项目中动态引用

    当在开发和产品上线的时候,我们经常会遇到在同一个地方由于环境的不同而地址也不同的情况,这时候如果在代码中将该地址写死,那势必会造成上线时手动改动,多人开发及多处使用该地址难以维护等一系列问题,为避免这 ...

  6. JMeter命令行方式运行时动态设置线程数及其他属性(动态传参)

    在使用JMeter进行性能测试时,以下情况经常出现: 1.测试过程中,指定运行的线程数.指定运行循环次数不断改变: 2.访问的目标地址发生改变,端口发生改变,需要改写脚本. 上面的问题在GUI中,直接 ...

  7. Your data vis “Spidey-sense” & the need for a robust “utility belt”

    @theboysmithy did a great piece on coming up with an alternate view for a timeline for an FT piece. ...

  8. android相对布局中控件的常用属性【转】

    Android布局属性详解 RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false android:layout_centerHorizontal 水平居中 andr ...

  9. Akka(4): Routers - 智能任务分配

    Actor模式最大的优点就是每个Actor都是一个独立的任务运算器.这种模式让我们很方便地把一项大型的任务分割成若干细小任务然后分配给不同的Actor去完成.优点是在设计时可以专注实现每个Actor的 ...

  10. 解密Lazy<T>

    1.Lazy<T>的使用 无意间看到一段代码,在创建对象的时候使用了Lazy,顾名思义Lazy肯定是延迟加载,那么它具体是如何创建对象,什么时候创建对象了? 先看这段示列代码: publi ...