Seven Yu @ 03/30/2008 (10:43 pm)

一个简单的 SQLite 类

Tags: , , ::

SQLData.as

PLAIN TEXT >> ACTIONSCRIPT:
  1. package org.phpz.data
  2. {
  3.     /**
  4.      * author: Seven Yu
  5.      * url: http://phpz.org/
  6.      * */
  7.     import flash.data.SQLConnection;
  8.     import flash.data.SQLStatement;
  9.     import flash.filesystem.File;
  10.     import flash.net.Responder;
  11.    
  12.     public class SQLData
  13.     {
  14.         private var dbFile:File = new File();
  15.         private var conn:SQLConnection = new SQLConnection();
  16.         private var stmt:SQLStatement = new SQLStatement();
  17.        
  18.         public function SQLData(path:String = null)
  19.         {
  20.             if (null != path)
  21.             {
  22.                 dbFile.nativePath = path;
  23.                 open(dbFile);
  24.             }
  25.         }
  26.        
  27.         //////////////////////////
  28.         // public functions
  29.         //////////////////////////
  30.        
  31.         /**
  32.          * open database from path
  33.          * */
  34.         public function openPath(path:String):Boolean
  35.         {
  36.             dbFile.nativePath = path;
  37.             return open(dbFile);
  38.         }
  39.        
  40.         /**
  41.          * open database from file
  42.          * */
  43.         public function openFile(file:File):Boolean
  44.         {
  45.             return open(file);
  46.         }
  47.        
  48.         /**
  49.          * close database connection
  50.          * */
  51.         public function close(responder:Responder = null):void
  52.         {
  53.             conn.connected && conn.close(responder);
  54.         }
  55.        
  56.         /**
  57.          * execute SELECT sql
  58.          * @return Array SQLStatement.getResult().data;
  59.          * */
  60.         public function select(sql:String, prefetch:int = -1, responder:Responder = null):Array
  61.         {
  62.             stmt.text = sql;
  63.             try
  64.             {
  65.                 stmt.execute(prefetch, responder);
  66.                 return stmt.getResult().data;
  67.             }
  68.             catch (e:Error)
  69.             {
  70.                 trace("<select>", e.message);
  71.                 trace(" - <SQL>", sql);
  72.             }
  73.             return null;
  74.         }
  75.        
  76.         /**
  77.          * 执行 INSERT UPDATE 或 CREATE 等语句
  78.          * @return int SQLStatement.getResult().rowsAffected
  79.          * */
  80.         public function update(sql:String, prefetch:int = -1, responder:Responder = null):int
  81.         {
  82.             stmt.text = sql;
  83.             try
  84.             {
  85.                 stmt.execute(prefetch, responder);
  86.                 return stmt.getResult().rowsAffected;
  87.             }
  88.             catch (e:Error)
  89.             {
  90.                 trace("<update>", e.message);
  91.                 trace(" - <SQL>", sql);
  92.             }
  93.             return -1;
  94.         }
  95.        
  96.         ///////////////////////////
  97.         // getter & setter
  98.         ///////////////////////////
  99.        
  100.         /**
  101.          * get database native path
  102.          * @return String path
  103.          * */
  104.         public function get path():String
  105.         {
  106.             return dbFile.nativePath;
  107.         }
  108.        
  109.         /**
  110.          * get database file
  111.          * @return File database file
  112.          * */
  113.         public function get file():File
  114.         {
  115.             return dbFile;
  116.         }
  117.        
  118.         /**
  119.          * get the last sql sentence
  120.          * @return String sql
  121.          * */
  122.         public function get lastSQL():String
  123.         {
  124.             return stmt.text;
  125.         }
  126.        
  127.         ///////////////////////////
  128.         // private functions
  129.         ///////////////////////////
  130.        
  131.         /**
  132.          * open database connection
  133.          * @private
  134.          * */
  135.         private function open(file:File):Boolean
  136.         {
  137.             dbFile = file;
  138.             close();
  139.             try
  140.             {
  141.                 conn.open(dbFile);
  142.                 stmt.sqlConnection = conn;
  143.             }
  144.             catch (e:Error)
  145.             {
  146.                 trace("  <open>", e.message);
  147.                 return false;
  148.             }
  149.             return true;
  150.         }
  151.     }
  152. }

应用演示:

PLAIN TEXT >> ACTIONSCRIPT:
  1. import org.phpz.data.SQLData;
  2. private var db:SQLData = new SQLData();
  3.  
  4. private function initConnect():void
  5. {
  6.     // 通过文件路径打开数据库
  7.     db.openPath(File.applicationDirectory.nativePath + "/data/test.sqlite");
  8.  
  9.     // - OR -
  10.  
  11.     // 直接打开数据库文件
  12.     // db.openFile(new File(File.applicationDirectory.nativePath + "/data/test.sqlite"));
  13.  
  14.     // 执行 insert update 或 create 等语句
  15.     // insert update 返回影响的行数, 失败返回 -1
  16.     // create 成功返回 0, 失败返回 -1
  17.     trace(db.update("update test set txt = 'aa' where txt = 'aa';")); // 可能的输出: 1
  18.  
  19.     // 执行 select 语句, 返回 SQLStatment.getResult().data 数组
  20.     dg.dataProvider = db.select("select * from address_book;");
  21. }

Seven Yu @ 03/26/2008 (12:57 am)

两个免费的 SQLite 管理工具

Tags: , , , ::
  1. SQLite-Manager 0.2.33
    这是一个开源的 Firefox 插件, 界面简洁大方, 功能齐全. 这里是截图
  2. SQLite Database Browser
    这是一个绿色软件, 支持多平台(windows, linux, mac), windows下只有一个exe文件, 直接运行即可. 截图