这本人写的原创代码:Flash/ActionScript读写SQLite二进制字段里的图片文件。
package
{
import flash.data.SQLConnection;
import flash.data.SQLMode;
import flash.data.SQLStatement;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.SQLEvent;
import flash.filesystem.File;
import flash.geom.Rectangle;
import flash.utils.getTimer;
import flash.utils.setTimeout;
public class SqliteBinaryTest extends Sprite
{
private static const DB_FILE:String = "data.db";
[Embed(source = "图片.png")]
private var bin_class:Class;
private var con:SQLConnection;
private var stm:SQLStatement;
public function SqliteBinaryTest()
{
super();
//创建数据库
flash.utils.setTimeout(createDatabase, 1000);
//插入数据
flash.utils.setTimeout(insertDatabase, 2000);
//读取数据
flash.utils.setTimeout(readDatabase, 3000);
}
private function createDatabase():void {
trace("创建数据库");
var file:File = new File(File.applicationDirectory.resolvePath(DB_FILE).nativePath);
if( file.exists )
file.deleteFile();
con = new SQLConnection();
con.openAsync(file, SQLMode.CREATE);//fileName = null 为内存数据库
con.addEventListener(SQLEvent.OPEN, function f(e:SQLEvent):void {
con.removeEventListener(SQLEvent.OPEN, f);
var sql:String = "CREATE TABLE IF NOT EXISTS my_table (" +
"name varchar(30)," +
"age int," +
"kg numeric, " +
"width int, " +
"height int, " +
"bin blob" +
")";
stm =new SQLStatement();
stm.sqlConnection=con;
stm.text=sql;
stm.execute();
}
);
}
private function insertDatabase():void {
trace("插入数据");
var sql:String = "insert into my_table(name,age,kg,width,height,bin) " +
"values(:name, :age, :kg, :width, :height, :bin)";
stm.text=sql;
var bin:BitmapData = new bin_class().bitmapData;
stm.parameters[":name"] = "hello中国";
stm.parameters[":age"] = flash.utils.getTimer();
stm.parameters[":kg"] = Number(Math.random() * 100);
stm.parameters[":width"] = bin.width;
stm.parameters[":height"] = bin.height;
stm.parameters[":bin"] = bin.getPixels(new Rectangle(0,0,bin.width,bin.height));
bin.dispose();bin=null;
stm.execute();
}
private function readDatabase():void {
trace("读取数据");
var sql:String = "select * from my_table";
var stm:SQLStatement =new SQLStatement();
stm.sqlConnection=con;
stm.text=sql;
stm.addEventListener(SQLEvent.RESULT, function f(e:SQLEvent):void {
stm.removeEventListener(SQLEvent.RESULT, f);
var o:Object = stm.getResult().data[0];
trace("name : " + o["name"]);
trace("age : " + o["age"]);
trace("kg : " + (o["kg"] as Number));
var bmd:BitmapData = new BitmapData(o["width"],o["height"],true,0);
bmd.setPixels(new Rectangle(0,0,o["width"],o["height"]), o["bin"]);
addChild(new Bitmap(bmd));
}
);
stm.execute();
}
}
}