SQLJetを使う!テーブル内容取得編

やってまいりました、テーブル内容を取得する方法です

	public String[][] getTable(String tableName) throws SqlJetException{

		// テーブル内容格納変数
		String[][] table_ar = null;

		// 読み込みモード
		db.beginTransaction(SqlJetTransactionMode.READ_ONLY);

		// テーブル取得
		ISqlJetTable table = db.getTable(tableName);

		// テーブルオープン
		ISqlJetCursor cursor = table.open();

		// 項目名取得
		String[] columnNames = getColumnNames(tableName);

		// 配列の要素数確定
		table_ar = new String[(int)cursor.getRowCount()][columnNames.length];

		// カーソルが最後でなければ取得
		if(!cursor.eof()){

			// 列カウント、行カウント
			int c_count, r_count = 0;

			do{
				c_count = 0;

				// 列数分ループ
				for(String str : columnNames){

					table_ar[r_count][c_count] = cursor.getString(str);
					c_count++;

				}
				r_count++;

				// カーソルを次へ(行数分ループ)
			}while(cursor.next());
		}

		db.commit();

		return table_ar;
	}

dbはSqlJetDb型の変数です。最終的に全部のメソッドを実装したコード載せるつもりです。

最初のSQLJetを使う!記事から見ていただけるとわかるはず…

テーブルを開いて、カーソルで一個ずつ配列に入れていくという作業になります。

公式のチュートリアルに沿って作ってみました。

このメソッドの戻り値をそのままJTableに入れるとちょうど縦横の組み合わせが合うようになっています。

今回は横幅が長くなってしまったので見づらいかと思いますが、ソース上にマウスポインタを移動させるとソース枠右上にアイコンが表示されるので、一番左の「view source」をクリックすると新しいタブ(あるいはウィンドウ)でソースコードだけ表示されます。ご活用ください。

SQLJetを使う!列名取得編

今回は作成したテーブルから列(カラム)名を取得します。

テーブル内容を表示させる事にも関わってきます。

	public String[] getColumnNames(String tableName) throws SqlJetException{

		// 列名格納配列
		String[] columnNames = null;

		// 読み込みモード
		db.beginTransaction(SqlJetTransactionMode.READ_ONLY);

		// テーブルを開く
		ISqlJetTable table = db.getTable(tableName);

		// テーブルを明確化(?)
		ISqlJetTableDef tabledef = table.getDefinition();

		// 列名を取得
		List<ISqlJetColumnDef> columnList = tabledef.getColumns();

		// 列名格納配列を初期化
		columnNames = new String[columnList.size()];

		// 格納
		for(int i = 0; i < columnNames.length; i++){
			columnNames[i] = columnList.get(i).getName();
		}

		db.commit();

		return columnNames;
	}

自分でもあまりわかっていないことが多いので、ご存知の方はコメントしていただけるとありがたいです。

SQLJetを使う!テーブル一覧編

今回はデータベースファイルに入っているテーブル名を一覧表示させます。

コードは以下の通り

		// ファイル名
		String DB_name = "C:\\sample.sqlite";

		// ファイル生成
		File dbFile = new File(DB_name);

		try{
			// DBオブジェクト生成
			SqlJetDb db = SqlJetDb.open(dbFile, true);

	        // 書き込みモード
	        db.beginTransaction(SqlJetTransactionMode.READ_ONLY);
	        try{
	        	// スキーマ取得
	        	ISqlJetSchema schema = db.getSchema();

	        	// テーブル一覧取得
	        	Set<String> table_list = schema.getTableNames();

	        	// 一覧表示
	        	for(String tableName : table_list){
	        		System.out.println(tableName);
	        	}

	        }finally{
	        	db.commit();
	        }

		}catch(SqlJetException e){
			e.printStackTrace();
		}

データベースからスキーマを取得して、スキーマからテーブル一覧を取得します。

その際Setで一覧が帰ってくるので拡張for文で簡潔に表示させてみました。

載せるコードを短くしてみましたがどうでしょう?メソッドとしてそのままコピーできるような形にした方がいいですかね?

いや、そもそも需要自体あるかどうか厳しいところだな…。

SQLJetを使う!テーブル作成編

前回データベースファイルを作成しましたので、今回は情報を入れる元となるテーブルを作成します。

テーブルを作るためにはまず何を格納するのかを決めますが、今回は以下のようにします。

列名 備考
id 主キー,空なし
name 空なし
age 空あり

名簿のようなテーブルとして空ありなのは問題ですが、今回はいろいろな書き方を示すということで深くは考えないように。

あと、テーブル名はmemberにしてnameのインデックスも作っておきます。

コードは以下のようになります

SQLJetを使う!準備編

SQLJetを使おうとこちらへ訪れた方はすでにSQLiteについてご存知だと思うのでSQLiteの説明は省きます。

SQLiteについて知りたい方はGoogle検索-「SQLite」DBOnline様の「SQLite入門」を御覧ください

SQLiteは軽量なSQLデータベースですが、SQLJetの場合SQL文は使えません。すべて用意された機能を使ってデータベースのファイル作成から出力まで行ないます。

それではSQLjetのダウンロードから始めます

JavaでSQLiteを使おう!SQLJet編

現在卒業制作でJavaでSQLiteを使ったものを制作しています。

SQLiteを扱うのにSQLJetを使っています。

まぁ日本語の解説が少ないこと。ドキュメント見ながら試行錯誤しているので予定の何割が実装できるのかわかりませんが続けております。

仕事で使っている方はドキュメント観てサクサクと作っているのでしょうか。

そこで、自分の調べたことを日本語で公開してくことによって誰かの助けになればと思いデータベースファイルの作成からテーブル内容の表示などを解説していきたいと思います。

ひとつの機能をひとつの記事で書いていく予定なので、最終的には(最後まで続けば…)ページに項目ごとに分類して目次のようなものを作って分かりやすくしたいですね。

次からSQLJetのダウンロードやクラスパスの通し方を解説したいと思います。

私の制作環境はWindows XPでEclipse3.5です。