air将图片以二进制形式插入sql数据库并读取显示

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" 
  3.        layout="absolute" 
  4.         applicationComplete="init()" 
  5.         backgroundColor="#FFFFFF" 
  6.         width="600" 
  7.         height="500" alpha="0.64" themeColor="#18699C" borderColor="#100C0C" borderThickness="12"
  8.         <mx:Script> 
  9.                 <![CDATA[ 
  10.                         import flash.data.SQLConnection; 
  11.                         import flash.events.SQLErrorEvent; 
  12.                         import flash.events.SQLEvent; 
  13.                         import flash.filesystem.File; 
  14.                         import flash.utils.ByteArray;
  15.                         import flash.display.*
  16.                         import flash.geom.Rectangle;
  17.                         import mx.graphics.codec.JPEGEncoder;
  18.                         private var conn:SQLConnection; 
  19.                         private var initComplete:Boolean = false
  20.                         private var sqlStat:SQLStatement; 
  21.                         private function init():void
  22.                         //新建sqlConnection                 
  23.                         conn = new SQLConnection(); 
  24.                         //不知道flash什么时候才能做成多线程..这样写起来真的很累                         
  25.                         conn.addEventListener(SQLEvent.OPEN, openHandler); 
  26.                         conn.addEventListener(SQLErrorEvent.ERROR, errorHandler); 
  27.                         //获取当前目录                         
  28.                         var dbFile:File = File.applicationStorageDirectory.resolvePath("e://wakao123/test.db"); 
  29.                         //打开sql连接 
  30.                         conn.open(dbFile);                         
  31.                         } 
  32.                          
  33.                         //连接后对数据库进行初始化,初始化脚本可以是*.sql,这里就不做这种处理了 
  34.                       private function openHandler(event:SQLEvent):void 
  35.                         { 
  36.                                 //初始化sqlStatement对象 
  37.                                 sqlStat = new SQLStatement(); 
  38.                                 sqlStat.sqlConnection = conn; 
  39.                                 var sql:String =         "CREATE TABLE IF NOT EXISTS employees (" + 
  40.                                                                     "    empId INTEGER PRIMARY KEY AUTOINCREMENT, " + 
  41.                                                                     "    firstName TEXT, " + 
  42.                                                                     "    lastName TEXT, " + 
  43.                                                                     "    salary NUMERIC CHECK (salary > 0)" + 
  44.                                                                     ")"
  45.                                 sqlStat.text = sql; 
  46.                                 sqlStat.addEventListener(SQLEvent.RESULT, statResult); 
  47.                                 sqlStat.addEventListener(SQLErrorEvent.ERROR, createError); 
  48.                                 sqlStat.execute();
  49.                                 
  50.                                 
  51.                                                          
  52.                         } 
  53.                         
  54.                         private function statResult(event:SQLEvent):void 
  55.                         { 
  56.                            //很无耻地强迫获取数据时更新数据 
  57.                             
  58.                             var sqlresult:SQLResult = sqlStat.getResult();                              
  59.                             if(sqlresult.data == null){ 
  60.                                         getResult(); 
  61.                                         return;                                         
  62.                                 } 
  63.                                 
  64.                             datafiled.dataProvider = sqlresult.data; 
  65.                             
  66.                             debug.text ="加载成功"
  67.                             var loaders:Loader=new Loader()
  68.                             loaders.loadBytes(sqlresult.data[0].lastName)
  69.                             
  70.                             this.stage.addChild(loaders) 
  71.                         } 
  72.                         private function createError(event:SQLErrorEvent):void 
  73.                         { 
  74.                            debug.text="失败"
  75.                         } 
  76.                         //获取数据函数 
  77.                         private function getResult():void
  78.                                 var sqlquery:String = "SELECT * FROM employees" 
  79.                                 excuseUpdate(sqlquery);                                 
  80.                         } 
  81.                         
  82.                         private function errorHandler(event:SQLErrorEvent):void 
  83.                         { 
  84.                            // trace("Error code:", event.error.code); 
  85.                            // trace("Details:", event.error.message); 
  86.                         } 
  87.                         //数据更新接口 
  88.                         private function excuseUpdate(str:String):void
  89.                                 sqlStat.text = str; 
  90.                                 sqlStat.clearParameters() 
  91.                                 sqlStat.execute(); 
  92.                         }                         
  93.                         
  94.                         //插入图片二进制流
  95.                         private function insertCode():void{
  96.                                
  97.                                var bmd:BitmapData=new BitmapData(add.width,add.height,true)
  98.                                bmd.draw(add)
  99.                                //var bounds:Rectangle = new Rectangle(0, 0, bmd.width, bmd.height);
  100.                                //var pixels:ByteArray = bmd.getPixels(bounds);
  101.                                var jpgenc:JPEGEncoder = new JPEGEncoder(100);
  102.                                var imgByteArray:ByteArray = jpgenc.encode(bmd);
  103.                                sqlStat.text ="Insert into employees(firstName,lastName,salary) values('asdf',@img,55)";
  104.                                sqlStat.parameters["@img"] = imgByteArray;
  105.                                sqlStat.execute();
  106.                         } 
  107.                 ]]> 
  108.         </mx:Script> 
  109.         <mx:TextArea x="96" y="10" width="402" height="179" id="debug"/> 
  110.         <mx:DataGrid x="96" y="197" id="datafiled"
  111.                 <mx:columns> 
  112.                         <mx:DataGridColumn headerText="ID" dataField="empId"/> 
  113.                         <mx:DataGridColumn headerText="firstName" dataField="firstName"/> 
  114.                         <mx:DataGridColumn headerText="lastName" dataField="lastName"/> 
  115.                         <mx:DataGridColumn headerText="salary" dataField="salary"/> 
  116.                 </mx:columns> 
  117.         </mx:DataGrid> 
  118.         <mx:Button x="228" y="374" label="图片" click="insertemp()" id="add"/> 
  119.         <mx:Button x="312" y="374" label="插入图片" click="insertCode()"/>
  120. </mx:WindowedApplication>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值