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   管理者用   
このエントリーをはてなブックマークに追加





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

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ