SQLite データベースの作成と スキーマ情報の取得と SELECT の結果を DataGrid へ一括ロード

  【AIR】 SQLite データベースの作成




ブラウザでダウンロード

Air_sqlite

AIR アプリケーション内より、SQLite データベースを作成した後、
テスト用のテーブルを二つ作成します。

SQLの実行結果ととテーブルの一覧を表示することができます
( テキストエリアは更新系のSQLも実行できます )




  ソースコード



● Form コンテナを使って、入力コントロールを並べています。
※ ラベルがデフォルトで右寄せになるので、スタイルで左寄せに変更しています

● DB の作成場所は、デフォルトでアプリケーションが存在するディレクトリになります
※ 作成可能なのは、DB のファイルが存在しない1度きりです。

● Alert は、非同期なので、閉じた時の処理としてフォーカスの移動を引数で指示しています

SQLConnection SQLStatement File

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
	xmlns:mx="http://www.adobe.com/2006/mxml"
	initialize="initData();"

	paddingLeft="0"
	paddingTop="0"
	paddingBottom="0"
	paddingRight="20"

	backgroundColor="0xC0C0C0"
>

<mx:Style>

	global {
		fontSize: 12;
	}

	.labelAlign {
		textAlign: left;
	}

	Alert {
		backgroundColor: #FFFFFF;
		backgroundAlpha: 1;
		color: #000000;
		borderColor: #000000;
		borderStyle: solid;
		borderThickness: 1;
		headerColors: #A0A0A0,#A0A0A0;
	}

</mx:Style>
<mx:Script>
<![CDATA[

	import flash.data.*;
	import mx.controls.Alert;
	import mx.events.CloseEvent;

	private var con:SQLConnection = new SQLConnection();

	// *********************************************************
	// アプリケーションの初期化
	// *********************************************************
	public function initData():void {

		// デフォルトの DB のパス
		dbpath.text = File.applicationDirectory.nativePath
			+ "\\db1.sqlite3";

		// テーブル一覧の表示イベント
		// ( loadSchema 後の処理 )
		con.addEventListener(flash.events.SQLEvent.SCHEMA,
			function( e:flash.events.SQLEvent ):void {
				var rs:SQLSchemaResult = con.getSchemaResult();
				grid.dataProvider = rs.tables;
				con.close();
			}
		)

	}

	// *********************************************************
	// DB作成
	// *********************************************************
	public function ActionStart():void {

		try {
			var target:File = new File(dbpath.text);
		}
		catch (error:Error) {
			Alert.show("エラー:" + error.message,
			"",Alert.OK,null,alertCloseDbpath);
			return;
		}

		if ( target.exists ) {
			Alert.show("データーベースは既に存在します",
			"",Alert.OK,null,alertCloseDbpath);
			return;
		}

		var exe:SQLStatement = new SQLStatement();

		try {
			con.open( target );
			exe.sqlConnection = con;

			exe.text = "create table 社員マスタ ("
					 + " 社員コード TEXT(4)"
					 + ",氏名 TEXT(50)"
					 + ",primary key(社員コード) )";
			exe.execute();
			exe.text = "create table 得意先マスタ ("
					 + " 得意先コード TEXT(4)"
					 + ",会社名 TEXT(50)"
					 + ",primary key(得意先コード) )";
			exe.execute();

			exe.text = "insert into 社員マスタ values("
					 + "'0001'"
					 + ",'日本語表示'"
					 + ")";
			exe.execute();

			exe.text = "insert into 社員マスタ values("
					 + "'0002'"
					 + ",'山田 太郎'"
					 + ")";
			exe.execute();

			exe.text = "insert into 社員マスタ values("
					 + "'0003'"
					 + ",'多岡 冬行'"
					 + ")";
			exe.execute();

			Alert.show("データベースを作成しました");
		}
		catch (error:Error) {
			Alert.show("エラー:" + error.message,
			"",Alert.OK,null,alertCloseDbpath);
			return;
		}

		con.close();

	}

	// *********************************************************
	// SQLの実行
	// *********************************************************
	public function ActionStart2():void {

		try {
			var target:File = new File(dbpath.text);
		}
		catch (error:Error) {
			Alert.show("エラー:" + error.message,
			"",Alert.OK,null,alertCloseDbpath);
			return;
		}

		if ( !target.exists ) {
			Alert.show("DBが存在しません",
			"",Alert.OK,null,alertCloseDbpath);
			return;
		}

		var exe:SQLStatement = new SQLStatement();

		try {
			con.open( target );
			exe.sqlConnection = con;

			exe.text = sql.text;
			exe.execute();

			var rs:SQLResult = exe.getResult();
			grid.dataProvider = rs.data;

		}
		catch (error:Error) {
			Alert.show("エラー:" + error.message,
			"",Alert.OK,null,alertCloseDbpath);
		}
		con.close();

	}

	// *********************************************************
	// テーブル一覧の表示
	// *********************************************************
	public function ActionStart3():void {

		try {
			var target:File = new File(dbpath.text);
		}
		catch (error:Error) {
			Alert.show("エラー:" + error.message,
			"",Alert.OK,null,alertCloseDbpath);
			return;
		}

		if ( !target.exists ) {
			Alert.show("DBが存在しません",
			"",Alert.OK,null,alertCloseDbpath);
			return;
		}

		var exe:SQLStatement = new SQLStatement();

		try {
			con.open( target );
			// テーブルスキーマをロード
			con.loadSchema(SQLTableSchema);
		}
		catch (error:Error) {
			Alert.show("エラー:" + error.message,
			"",Alert.OK,null,alertCloseDbpath);
			return;
		}

	}

	// *********************************************************
	// 上のエラーメッセージ表示後の処理
	// *********************************************************
	public function alertCloseDbpath(event:CloseEvent):void {

		dbpath.setFocus();

	}

]]>
</mx:Script>

<mx:Form width="90%" height="90%">
	<mx:FormHeading label="SQLite データベースの作成"/>
	
	<mx:FormItem label="データベースのパス" labelStyleName="labelAlign">
		<mx:TextInput
			id="dbpath"
			width="500"
		/>
	</mx:FormItem>
	
	<mx:FormItem label="処理" labelStyleName="labelAlign">
		<mx:Button
			label="DB作成"
			click="ActionStart();"
		/>
	</mx:FormItem>

	<mx:FormItem label="" labelStyleName="labelAlign">
		<mx:HBox>
			<mx:Button
				label="SQL実行"
				click="ActionStart2();"
			/>
			<mx:Button
				label="テーブル一覧"
				click="ActionStart3();"
			/>
		</mx:HBox>
	</mx:FormItem>

	<mx:FormItem label="" labelStyleName="labelAlign">
		<mx:TextArea id="sql" width="300" text="select * from 社員マスタ" />
	</mx:FormItem>

	<mx:FormItem label="" labelStyleName="labelAlign">
		<mx:DataGrid
			id="grid" width="500" height="300"
			horizontalScrollPolicy="on"
		/>
	</mx:FormItem>


</mx:Form>


</mx:Application>



  実行用の xml

<?xml version="1.0" encoding="utf-8" ?> 
<application xmlns="http://ns.adobe.com/air/application/1.5"> 
	
	<id>lightbox.ceratedb</id> 
	<version>1.0</version> 
	<filename>create DB</filename> 
	<name>SQLite データベースの作成</name> 
	<installFolder>lightbox</installFolder> 

	<initialWindow> 
		<title>AIR アプリケーション</title> 
		<content>Mainw.swf</content> 
		<x>300</x>
		<y>200</y>
		<width>750</width>
		<height>600</height>
		<systemChrome>standard</systemChrome> 
		<transparent>false</transparent> 
		<visible>true</visible> 
		<minimizable>true</minimizable> 
		<maximizable>true</maximizable> 
		<resizable>true</resizable> 
	</initialWindow>

</application>

↓オンラインドキュメント( 英文 )
Setting AIR application properties
Creating your first AIR application with the Flex SDK










  infoboard   管理者用   
このエントリーをはてなブックマークに追加




SQLの窓  天気  IT用語辞典
Yahoo!ニュース  マルチ辞書
PHP マニュアル  Google URL短縮 


フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ