一个简单的 SQLite 类
SQLData.as
PLAIN TEXT >> ACTIONSCRIPT:
-
package org.phpz.data
-
{
-
/**
-
* author: Seven Yu
-
* url: http://phpz.org/
-
* */
-
import flash.data.SQLConnection;
-
import flash.data.SQLStatement;
-
import flash.filesystem.File;
-
import flash.net.Responder;
-
-
public class SQLData
-
{
-
private var dbFile:File = new File();
-
private var conn:SQLConnection = new SQLConnection();
-
private var stmt:SQLStatement = new SQLStatement();
-
-
public function SQLData(path:String = null)
-
{
-
if (null != path)
-
{
-
dbFile.nativePath = path;
-
open(dbFile);
-
}
-
}
-
-
//////////////////////////
-
// public functions
-
//////////////////////////
-
-
/**
-
* open database from path
-
* */
-
public function openPath(path:String):Boolean
-
{
-
dbFile.nativePath = path;
-
return open(dbFile);
-
}
-
-
/**
-
* open database from file
-
* */
-
public function openFile(file:File):Boolean
-
{
-
return open(file);
-
}
-
-
/**
-
* close database connection
-
* */
-
public function close(responder:Responder = null):void
-
{
-
conn.connected && conn.close(responder);
-
}
-
-
/**
-
* execute SELECT sql
-
* @return Array SQLStatement.getResult().data;
-
* */
-
public function select(sql:String, prefetch:int = -1, responder:Responder = null):Array
-
{
-
stmt.text = sql;
-
try
-
{
-
stmt.execute(prefetch, responder);
-
return stmt.getResult().data;
-
}
-
catch (e:Error)
-
{
-
trace("<select>", e.message);
-
trace(" - <SQL>", sql);
-
}
-
return null;
-
}
-
-
/**
-
* 执行 INSERT UPDATE 或 CREATE 等语句
-
* @return int SQLStatement.getResult().rowsAffected
-
* */
-
public function update(sql:String, prefetch:int = -1, responder:Responder = null):int
-
{
-
stmt.text = sql;
-
try
-
{
-
stmt.execute(prefetch, responder);
-
return stmt.getResult().rowsAffected;
-
}
-
catch (e:Error)
-
{
-
trace("<update>", e.message);
-
trace(" - <SQL>", sql);
-
}
-
return -1;
-
}
-
-
///////////////////////////
-
// getter & setter
-
///////////////////////////
-
-
/**
-
* get database native path
-
* @return String path
-
* */
-
public function get path():String
-
{
-
return dbFile.nativePath;
-
}
-
-
/**
-
* get database file
-
* @return File database file
-
* */
-
public function get file():File
-
{
-
return dbFile;
-
}
-
-
/**
-
* get the last sql sentence
-
* @return String sql
-
* */
-
public function get lastSQL():String
-
{
-
return stmt.text;
-
}
-
-
///////////////////////////
-
// private functions
-
///////////////////////////
-
-
/**
-
* open database connection
-
* @private
-
* */
-
private function open(file:File):Boolean
-
{
-
dbFile = file;
-
close();
-
try
-
{
-
conn.open(dbFile);
-
stmt.sqlConnection = conn;
-
}
-
catch (e:Error)
-
{
-
trace(" <open>", e.message);
-
return false;
-
}
-
return true;
-
}
-
}
-
}
应用演示:
PLAIN TEXT >> ACTIONSCRIPT:
-
import org.phpz.data.SQLData;
-
private var db:SQLData = new SQLData();
-
-
private function initConnect():void
-
{
-
// 通过文件路径打开数据库
-
db.openPath(File.applicationDirectory.nativePath + "/data/test.sqlite");
-
-
// - OR -
-
-
// 直接打开数据库文件
-
// db.openFile(new File(File.applicationDirectory.nativePath + "/data/test.sqlite"));
-
-
// 执行 insert update 或 create 等语句
-
// insert update 返回影响的行数, 失败返回 -1
-
// create 成功返回 0, 失败返回 -1
-
trace(db.update("update test set txt = 'aa' where txt = 'aa';")); // 可能的输出: 1
-
-
// 执行 select 语句, 返回 SQLStatment.getResult().data 数组
-
dg.dataProvider = db.select("select * from address_book;");
-
}