日期:2014-05-16 浏览次数:20621 次
/** * 说明:SQLite数据库连接类。 * 该类用于与数据库建立连接。 * 外部可通过调用该类的connect()方法来建立与指定路径的数据库(文件)的连接. * 在调用connect与数据库建立连接时,如果成功建立(即成功打开数据库)会触发 SQLEvent.OPEN 事件 * 如果打开失败,将触发 SQLErrorEvent.ERROR 事件; */ package sunnyluo.sqlite { import flash.data.SQLConnection; import flash.data.SQLMode; import flash.events.EventDispatcher; import flash.events.SQLErrorEvent; import flash.events.SQLEvent; import flash.filesystem.File; import flash.filesystem.FileMode; import flash.filesystem.FileStream; [Event(name="open",type="flash.events.SQLEvent")] [Event(name="error",type="flash.events.SQLErrorEvent")] public class SQLiteConnection extends EventDispatcher { private var _conn : SQLConnection; private var _connected : Boolean = false;; private var _connecting:Boolean = false; private var _path : String; private var _dbFile:File; /** * 构造函数. * */ public function SQLiteConnection(path : String) { _path = path;_conn = new SQLConnection(); _connected = false; } /** * 与指定路径的数据库文件建立连接. * */ public function connect():void { if(!_conn) { _conn = new SQLConnection(); _connected = false; } if(_connected){ this.dispatchEvent(new SQLEvent(SQLEvent.OPEN)); return; } if(_connecting) { return; } _connecting = true; addHandler(); try{ //_dbFile?"":_dbFile=new File(_path).resolvePath(_path); _dbFile =new File(_path); //如果数据库文件不存在,就先创建 if(! _dbFile.exists) { var fs:FileStream = new FileStream(); fs=new FileStream(); fs.open(_dbFile,FileMode.APPEND); fs.close(); } _conn.openAsync(_dbFile, SQLMode.CREATE); }catch(e:Error) { trace(e.message, _path); } } /** * 添加数据库连接事件侦听函数; * */ private function addHandler():void { if(_conn) { _conn.addEventListener(SQLEvent.OPEN, sqlOpenHandler); _conn.addEventListener(SQLErrorEvent.ERROR, openErrorHandler); } } /** * 移除数据库连接事件侦听函数; * */ private function removeHandler():void { if(_conn) { _conn.removeEventListener(SQLEvent.OPEN, sqlOpenHandler); _conn.removeEventListener(SQLErrorEvent.ERROR, openErrorHandler); } } /** * 成功打开数据库的事件处理函数; * @param event * */ private function sqlOpenHandler(event : SQLEvent):void { _connected = true; _connecting = false; removeHandler(); this.dispatchEvent(event); } /** * 打开数据库失败的事件处理函数. * @param event * */ private function openErrorHandler(event : SQLErrorEvent):void { _connected = false; _connecting = false; removeHandler(); this.dispatchEvent(event); } /** * 是否已经建立了连接. * @return * */ public function isConnected() : Boolean { return _connected; } /** * 获得 SQLConnection 对象 * @return * */ public function getConn():SQLConnection { return _conn ? _conn : new SQLConnection(); } /** *关闭数据库 * */ public function close():void { if(_conn) { _conn.close(); _conn=null; } if(_dbFile){ _dbFile.cancel(); _dbFile=null; } _connected = false; _connecting = false; } } }
/** * 说明:SQLite数据库操作类. * 该类是所有数据库操作的基类,如