• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>AIR>文章内容
  • AIR 的本地数据库访问,操作
  • 来源:xflex.cn 作者:猫粮 2008-06-22 【

好像有人要Air访问数据库的教程,我做了个

在附件中~代码只有100行多一点点
其实Air访问Sqllite数据库一点都不难~也很便利。
例子中我只做了一个插入和删除的功能
感觉最麻烦的就是将数据库初始化!
因为时间和身体问题我就没有把sql操作进行封装了
哪位朋友有时间有兴趣的话可以把Air的sql操作封装一下...

代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
        preinitialize="init()"
        fontSize="12" backgroundColor="#FFFFFF" width="600" height="700">
        <mx:Script>
                <![CDATA[
                        import flash.data.SQLConnection;
                        import flash.events.SQLErrorEvent;
                        import flash.events.SQLEvent;
                        import flash.filesystem.File;
                       
                        private var conn:SQLConnection;
                        private var initComplete:Boolean = false;
                        private var sqlStat:SQLStatement;
                       
                        private function init():void{
                        //新建sqlConnection               
                        conn = new SQLConnection();
                        //不知道flash什么时候才能做成多线程..这样写起来真的很累                       
                        conn.addEventListener(SQLEvent.OPEN, openHandler);
                        conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);
                        //获取当前目录                       
                        var dbFile:File = File.applicationResourceDirectory.resolvePath("DBSample.db");
                        //打开sql连接
                        conn.open(dbFile);                       
                        }
                       
                        //连接后对数据库进行初始化,初始化脚本可以是*.sql,这里就不做这种处理了
                        private function openHandler(event:SQLEvent):void
                        {
                                //初始化sqlStatement对象
                            sqlStat = new SQLStatement();
                                sqlStat.sqlConnection = conn;
                                var sql:String =         "CREATE TABLE IF NOT EXISTS employees (" +
                                                                    "    empId INTEGER PRIMARY KEY AUTOINCREMENT, " +
                                                                    "    firstName TEXT, " +
                                                                    "    lastName TEXT, " +
                                                                    "    salary NUMERIC CHECK (salary > 0)" +
                                                                    ")";
                                sqlStat.text = sql;
                                sqlStat.addEventListener(SQLEvent.RESULT, statResult);
                                sqlStat.addEventListener(SQLErrorEvent.ERROR, createError);
                                sqlStat.execute();                       
                        }
                        private function statResult(event:SQLEvent):void
                        {
                                //很无耻地强迫获取数据时更新数据
                            var sqlresult:SQLResult = sqlStat.getResult();                               
                                if(sqlresult.data == null){
                                        getResult();
                                        return;                                       
                                }
                                datafiled.dataProvider = sqlresult.data;
                        }
                        //获取数据函数
                        private function getResult():void{
                                var sqlquery:String = "SELECT * FROM employees"
                                excuseUpdate(sqlquery);                               
                        }
                        private function createError(event:SQLErrorEvent):void
                        {
                            trace("Error code:", event.error.code);
                            trace("Details:", event.error.message);
                        }
                       
                        private function errorHandler(event:SQLErrorEvent):void
                        {
                            trace("Error code:", event.error.code);
                            trace("Details:", event.error.message);
                        }
                        //数据更新接口
                        private function excuseUpdate(sql:String):void{
                                sqlStat.text = sql;
                                sqlStat.execute();
                        }                       
                        //插入操作
                        private function insertemp():void{
                                var sqlupdate:String = "Insert into employees(firstName,lastName,salary) values('" +
                                                firstName.text +
                                                "','" +
                                                lastName.text +
                                                "','" +
                                                salary.text +
                                                "')";
                        debug.text+=sqlupdate+"\n"                                               
                                excuseUpdate(sqlupdate)
                        }
                        //删除操作
                        private function deleteemp():void{
                                var sqldelete:String = "delete from employees where empId='" +
                                                datafiled.selectedItem.empId +
                                                "'";
                                excuseUpdate(sqldelete);
                                debug.text+=sqldelete+"\n"                               
                        }
                       
                ]]>
        </mx:Script>
        <mx:TextArea x="21" y="10" width="402" height="179" id="debug"/>
        <mx:DataGrid x="21" y="197" id="datafiled">
                <mx:columns>
                        <mx:DataGridColumn headerText="ID" dataField="empId"/>
                        <mx:DataGridColumn headerText="firstName" dataField="firstName"/>
                        <mx:DataGridColumn headerText="lastName" dataField="lastName"/>
                        <mx:DataGridColumn headerText="salary" dataField="salary"/>
                </mx:columns>
        </mx:DataGrid>
        <mx:Form x="21" y="471">
                <mx:FormItem label="firstName">
                        <mx:TextInput id="firstName"/>
                </mx:FormItem>
                <mx:FormItem label="lastName">
                        <mx:TextInput id="lastName"/>
                </mx:FormItem>
                <mx:FormItem label="salary">
                        <mx:TextInput id="salary"/>
                </mx:FormItem>
        </mx:Form>
        <mx:Button x="300" y="503" label="添加" click="insertemp()"/>
        <mx:Button x="300" y="533" label="删除" click="deleteemp()"/>
</mx:WindowedApplication>




上一篇:VideoWidget Alpha1.0   下一篇:ADOBE AIR1.1 开发注意
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)