Flash/ActionScript读写SQLite二进制字段里的图片文件

这本人写的原创代码: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();
			
		}
		
		
	}
}


猜你喜欢

转载自blog.csdn.net/RoadToTheExpert/article/details/45095077