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

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

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

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

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

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

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

<br />
import java.io.File;<br />
import org.tmatesoft.sqljet.core.SqlJetException;<br />
import org.tmatesoft.sqljet.core.SqlJetTransactionMode;<br />
import org.tmatesoft.sqljet.core.table.SqlJetDb;</p>
<p>public class TableCreate {<br />
	public static void main(String[] args) {</p>
<p>		// テーブルクエリ<br />
		String createTableQuery = &quot;CREATE TABLE member (id TEXT NOT NULL PRIMARY KEY,name TEXT NOT NULL,age INTEGER)&quot;;<br />
		// インデックスクエリ<br />
		String createNameIndexQuery = &quot;CREATE INDEX name_index ON member(name)&quot;;</p>
<p>		// ファイル名<br />
		String DB_name = &quot;C:\\sample.sqlite&quot;;</p>
<p>		// ファイル生成<br />
		File dbFile = new File(DB_name);</p>
<p>		try{<br />
			// 読み込み処理開始<br />
			// DBオブジェクト生成<br />
			SqlJetDb db = SqlJetDb.open(dbFile, true);<br />
	        // Autovacuum有効<br />
	        db.getOptions().setAutovacuum(true);<br />
	        // 書き込みモード<br />
	        db.beginTransaction(SqlJetTransactionMode.WRITE);</p>
<p>	        try{<br />
	        	db.getOptions().setUserVersion(1);<br />
	        }finally{<br />
	        	db.commit();<br />
	        }</p>
<p>	        //テーブル作成処理開始<br />
	        // 書き込みモード<br />
	        db.beginTransaction(SqlJetTransactionMode.WRITE);<br />
	        try{<br />
	        	// テーブル作成<br />
	        	db.createTable(createTableQuery);<br />
	        	// インデックス作成<br />
	        	db.createIndex(createNameIndexQuery);<br />
	        }finally{<br />
	        	db.commit();<br />
	        }</p>
<p>		}catch(SqlJetException e){<br />
			e.printStackTrace();<br />
		}<br />
	}<br />
}<br />

最初にデータベースの読み込み処理を行ないましたが、手順はデータベースファイルの作成と同じです。

10行目-テーブルクエリを文字列型で書いています。書式は『CREATE TABLE テーブル名 (列名 属性 オプション,以下繰り返し)』となっています。属性は[TEXT],[INTEGER]などがあり、オプションは[NOT NULL],[PRIMARY KEY]があります。

12行目-インデックスクエリを文字列型で書いています。インデックスは検索などで用いるためよく条件に指定する列名で作っておいたほうが良いそうです。コレも書式が決まっており『CREATE INDEX インデックス名 ON テーブル名(列名)』になります。列名は複数指定可。

インデックス名は自由に指定しても大丈夫ですが、慣習的に「列名_index」にすると分かりやすいです。

37行目-トランザクションを書き込みモードに。一度コミットしているので再度指定します。

40,42行目-ここでテーブルとインデックスを作成しています。

以上でテーブル作成完了です。データベースの読み込みも行っているので長くなりましたが、テーブル作成の部分だけ見ればわかりやすいと思います。

ちゃんと作成出来ているかは以前ダウンロードしたSQLJetの中にあるsqljet-browser[ver].jarで確認できます

ブラウザーで表示

ブラウザーで表示

メニューバー>Fileメニュー>Open DataBaseでデータベースファイルを指定すればこのような表示になるはずです。

作成していない「sqlite_autoindex_member_1」というインデックスがありますが、コレはPrimary key の指定をしたので自動的に生成されたものです。

Browse Dataタブを選択するとテーブルの中身を見ることが出来ますが、今回はそこまでやっていないので何も表示されません。

以上でテーブル作成編は終了です。何か間違いや不明な点がございましたらコメントをお願いします。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク