flex sqlite基本用法

頁面

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
					   xmlns:s="library://ns.adobe.com/flex/spark" 
					   xmlns:mx="library://ns.adobe.com/flex/mx">
	<fx:Script>
		<![CDATA[
			import sqlTest.SQLTest;
			protected function button1_clickHandler(event:MouseEvent):void
			{
				var sql:SQLTest = new SQLTest();
				
			}
		]]>
	</fx:Script>
	<s:Button x="192" y="221" label="按鈕" click="button1_clickHandler(event)"/>
</s:WindowedApplication>

sqlite類

package sqlTest
{
	import flash.data.SQLConnection;
	import flash.data.SQLResult;
	import flash.data.SQLStatement;
	import flash.events.SQLErrorEvent;
	import flash.events.SQLEvent;
	import flash.filesystem.File;
	import flash.net.Responder;
	
	import mx.controls.Alert;

	public class SQLTest
	{
		private var con:SQLConnection;	
		private var stmt:SQLStatement;
		private var creatTableSQL:String ="CREATE TABLE IF NOT EXISTS user ( "+  
										"userId INTEGER PRIMARY KEY AUTOINCREMENT, " +  
										"userName TEXT, " +  
										"password TEXT )"; 
		
		private var insertSQL:String = "INSERT INTO user (userName, password) VALUES ('admin', 'admin')";
		//語句參數       :itemName  @firstName 或者  ?  使用問號時只能用索引方式設值 索引從0開始 
		private var insertSQLparams:String = "INSERT INTO user (userName, password) VALUES (:userName, @password)";
		private var deleteSQLparams:String = "delete from user where userName=:userName"
		private var updateSQLparams:String = "update user set password= ? where userName= ?";
		private var selectSQL:String = "select userName,password from user"
		public function SQLTest()
		{
			initApp();
			
		}
		private function initApp():void
		{
			var file:File = File.applicationStorageDirectory.resolvePath("MySQLite.sqlite")
			con = new SQLConnection();
			//異步
//			asyncOpen(con,file);
			//同步
			open(con,file);
		}
		

		private function open(con:SQLConnection,file:File):void
		{
			try{
				//若參數爲空則建立在內存上 若文件不存在則自動創建
				con.open(file);
	con.begin();		
				Alert.show("Create/open database finished");
				stmt = new SQLStatement(); 
				stmt.sqlConnection = con; 
				//1.create table
				stmt.text = creatTableSQL;
				//2.insert data
				stmt.text = insertSQL;
				//帶佔位符insert
//				stmt.text = insertSQLparams;
//				stmt.parameters[":userName"] = "aaa";
//				stmt.parameters["@password"] = "admin";
				//3.delete
//				stmt.text = deleteSQLparams;
//				stmt.parameters[0] = "admin";
				//4.update
//				stmt.text = updateSQLparams;
//				stmt.parameters[0] = "aaa";
//				stmt.parameters[1] = "aaa";
				//5.select
//				stmt.text = selectSQL;
//				var responder:Responder = new Responder("resultHandler", "errorHandler");
//				stmt.execute(1,responder);//此處可以指定返回行數 ,若不使用responder則添加2個監聽器如下
//				stmt.addEventListener(SQLEvent.RESULT,resultHandler);
//				stmt.addEventListener(SQLErrorEvent.ERROR,errorHandler);
				stmt.execute();
				var result:SQLResult = stmt.getResult(); 
				//row
				if(result!=null)
				{
					//上一次INSERT 操作的行標識符  如果執行的語句不是 INSERT 語句,則該值爲 0
					var row:Number = result.lastInsertRowID;
					 row = result.rowsAffected;
					Alert.show("Row"+row.toString());
				}
				//data
				if(result.data!=null)
				{
					var numResults:int =result.data.length;
					
					for (var i:int = 0; i < numResults; i++) 
					{ 
						var re:Object = result.data[i]; 
						var output:String = "userName: " + re.userName; 
						output += "; password: " + re.password; 
						Alert.show(output);  
					} 
				}
				
				
				Alert.show("finished");
	con.commit(); 		
			}catch(error:SQLErrorEvent)
			{
	con.rollback();
				errorHandler(error);
			}
		}
		
		private function asyncOpen(con:SQLConnection,file:File):void
		{
			// openAsync SQLConnection 對象操作導致錯誤時調度
			con.addEventListener(SQLErrorEvent.ERROR,errorHandler);
			// openAsync 方法調用操作成功完成時調度
			con.addEventListener(SQLEvent.OPEN,openHandler);
			//若參數爲空則建立在內存上 若文件不存在則自動創建
			con.openAsync(file);
		}
		
		private function openHandler(evt:SQLEvent):void
		{
			Alert.show("Create/open database finished");
			stmt = new SQLStatement(); 
			stmt.sqlConnection = con; 
			stmt.text = creatTableSQL;
			stmt.addEventListener(SQLEvent.RESULT, createResult); 
			stmt.addEventListener(SQLErrorEvent.ERROR, createError); 
			stmt.execute();  
		}
		
		private function errorHandler(evt:SQLErrorEvent):void
		{
			Alert.show("SQLErrorEvent");
			Alert.show(evt.error.message);
			Alert.show(evt.error.details);
		}
		
		private function createResult(event:SQLEvent):void 
		{ 
			Alert.show("create table finished"); 
		}
		
		private function createError(event:SQLErrorEvent):void 
		{ 
			Alert.show("Error message:", event.error.message); 
			Alert.show("Details:", event.error.details); 
		}
	}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章