- <?xml version="1.0" encoding="utf-8"?>
- <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
- layout="absolute"
- applicationComplete="init()"
- backgroundColor="#FFFFFF"
- width="600"
- height="500" alpha="0.64" themeColor="#18699C" borderColor="#100C0C" borderThickness="12">
- <mx:Script>
- <![CDATA[
- import flash.data.SQLConnection;
- import flash.events.SQLErrorEvent;
- import flash.events.SQLEvent;
- import flash.filesystem.File;
- import flash.utils.ByteArray;
- import flash.display.*
- import flash.geom.Rectangle;
- import mx.graphics.codec.JPEGEncoder;
- private var conn:SQLConnection;
- private var initComplete:Boolean = false;
- private var sqlStat:SQLStatement;
- private function init():void{
- //新建sqlConnection
- conn = new SQLConnection();
- //不知道flash什么时候才能做成多线程..这样写起来真的很累
- conn.addEventListener(SQLEvent.OPEN, openHandler);
- conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);
- //获取当前目录
- var dbFile:File = File.applicationStorageDirectory.resolvePath("e://wakao123/test.db");
- //打开sql连接
- conn.open(dbFile);
- }
- //连接后对数据库进行初始化,初始化脚本可以是*.sql,这里就不做这种处理了
- private function openHandler(event:SQLEvent):void
- {
- //初始化sqlStatement对象
- sqlStat = new SQLStatement();
- sqlStat.sqlConnection = conn;
- var sql:String = "CREATE TABLE IF NOT EXISTS employees (" +
- " empId INTEGER PRIMARY KEY AUTOINCREMENT, " +
- " firstName TEXT, " +
- " lastName TEXT, " +
- " salary NUMERIC CHECK (salary > 0)" +
- ")";
- sqlStat.text = sql;
- sqlStat.addEventListener(SQLEvent.RESULT, statResult);
- sqlStat.addEventListener(SQLErrorEvent.ERROR, createError);
- sqlStat.execute();
- }
- private function statResult(event:SQLEvent):void
- {
- //很无耻地强迫获取数据时更新数据
- var sqlresult:SQLResult = sqlStat.getResult();
- if(sqlresult.data == null){
- getResult();
- return;
- }
- datafiled.dataProvider = sqlresult.data;
- debug.text ="加载成功"
- var loaders:Loader=new Loader()
- loaders.loadBytes(sqlresult.data[0].lastName)
- this.stage.addChild(loaders)
- }
- private function createError(event:SQLErrorEvent):void
- {
- debug.text="失败"
- }
- //获取数据函数
- private function getResult():void{
- var sqlquery:String = "SELECT * FROM employees"
- excuseUpdate(sqlquery);
- }
- private function errorHandler(event:SQLErrorEvent):void
- {
- // trace("Error code:", event.error.code);
- // trace("Details:", event.error.message);
- }
- //数据更新接口
- private function excuseUpdate(str:String):void{
- sqlStat.text = str;
- sqlStat.clearParameters()
- sqlStat.execute();
- }
- //插入图片二进制流
- private function insertCode():void{
- var bmd:BitmapData=new BitmapData(add.width,add.height,true)
- bmd.draw(add)
- //var bounds:Rectangle = new Rectangle(0, 0, bmd.width, bmd.height);
- //var pixels:ByteArray = bmd.getPixels(bounds);
- var jpgenc:JPEGEncoder = new JPEGEncoder(100);
- var imgByteArray:ByteArray = jpgenc.encode(bmd);
- sqlStat.text ="Insert into employees(firstName,lastName,salary) values('asdf',@img,55)";
- sqlStat.parameters["@img"] = imgByteArray;
- sqlStat.execute();
- }
- ]]>
- </mx:Script>
- <mx:TextArea x="96" y="10" width="402" height="179" id="debug"/>
- <mx:DataGrid x="96" y="197" id="datafiled">
- <mx:columns>
- <mx:DataGridColumn headerText="ID" dataField="empId"/>
- <mx:DataGridColumn headerText="firstName" dataField="firstName"/>
- <mx:DataGridColumn headerText="lastName" dataField="lastName"/>
- <mx:DataGridColumn headerText="salary" dataField="salary"/>
- </mx:columns>
- </mx:DataGrid>
- <mx:Button x="228" y="374" label="图片" click="insertemp()" id="add"/>
- <mx:Button x="312" y="374" label="插入图片" click="insertCode()"/>
- </mx:WindowedApplication>