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);
        }
    }
}

最新文章

  1. win7快捷键
  2. 无法执行 FunctionImport“entitys.xx”,因为未将它映射到存储函数。EF
  3. Android 中ViewPagerIndicator的使用
  4. WPF开发时光之痕日记本(一)——富文本编辑器
  5. 使用mutt+msmtp在Linux命令行界面下发邮件
  6. shop++ 安装
  7. 基本SQL语句练习之SELECT
  8. Computer Graphics Thinking–texture tiling
  9. Ffmpeg和SDL如何同步音频
  10. SharedPreference对象及其xml文件
  11. boost.asio系列——buffer
  12. Python学习:基本概念
  13. &lt;Mastering KVM Virtualization&gt;:第四章 使用libvirt创建你的第一台虚拟机
  14. windows下使用Git Bash命令行克隆远程仓库代码
  15. Java基础学习笔记二十二 网络编程
  16. synchronize 关键字原理
  17. AST的作用
  18. MyBatis学习总结(二)——MyBatis核心配置文件与输入输出映射
  19. SpringMVC-1-(简介及HelloWord)
  20. sqlalchemy 多对多关系

热门文章

  1. 当一个JavaScripter初次进入PHP的世界,他将看到这样的风景
  2. JVM类加载续
  3. [原创]Nexus5 源码下载、编译、真机烧录过程记录
  4. 开涛spring3(12.2) - 零配置 之 12.2 注解实现Bean依赖注入
  5. python小工具:用python操作HP的Quality Center (二)----- 用异步方式提高速度
  6. ssh框架整合之登录以及增删改查
  7. C语言指针声明探秘
  8. android网络监测
  9. mysql too many connections 问题
  10. JDK并发包