トッカンソフトウェア

SQLite Javaからアクセス

今回はJavaを使ってSQLiteにアクセスしてみます。
SQLiteについてはこちらをご参照下さい。


環境構築

Javaからアクセスするには、JDBCドライバを入手します。
本家にはJDBCドライバはありませんが、斉藤 太郎さんが作成されたJDBCがよく使われているみたいです。

ここ (https://bitbucket.org/xerial/sqlite-jdbc/downloads/)で入手できます。


取得したJDBCのJarをEclipseのプロジェクトのビルドパスに追加します。


JavaでSQLiteにアクセス

JDBCの指定はorg.sqlite.JDBCを指定し、コネクション取得ではjdbc:sqlite:を指定し、後ろにSQLiteのデータファイルの相対パスか絶対パスを付けます。
後は普通のJDBCの処理と同様です。
				
package testSqlite;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

public class Test {
	public static void main(String[] args) {
		try {
			connectionTest();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * コネクションの取得
	 * 
	 * @throws Exception 実行時例外
	 */
	public static void connectionTest() throws Exception {
		Connection conn = null;

		try {

			// クラスのロード
			Class.forName("org.sqlite.JDBC");

			// コネクションの取得
			conn = DriverManager.getConnection(
				"jdbc:sqlite:C:\\work\\hp\\lib\\SQLite\\test.sqlite3");

			// SELECTのテスト
			selectTest(conn);

			System.out.println("connectionTest_OK");
		} catch (Exception e) {
			System.out.println("connectionTest_NG");
			throw e;
		} finally {
			if (conn != null) {
				conn.close();
			}
		}
	}

	/**
	 * データ取得
	 * 
	 * @param conn コネクション
	 * @throws SQLException SQL例外
	 */
	public static void selectTest(Connection conn) throws SQLException {
		Statement stmt = null;
		ResultSet rs = null;

		// 項目名を格納する配列
		ArrayList<String> clmnAry = null;
		try {

			// ステートメントの作成
			stmt = conn.createStatement();

			// SQLの実行
			rs = stmt.executeQuery("SELECT * FROM TBL");

			// 結果の表示
			while (rs.next()) {

				// 初回のみ項目名を取得
				if (clmnAry == null) {
					clmnAry = new ArrayList<>();
					ResultSetMetaData metaData = rs.getMetaData();
					int columnCount = metaData.getColumnCount();
					for (int i = 0; i < columnCount; i++) {
						System.out.println(metaData.getColumnName(i + 1));
						clmnAry.add(metaData.getColumnName(i + 1));
					}
				}

				// データ取得(全項目)
				for (String clmn : clmnAry) {
					System.out.println(rs.getObject(clmn));
				}

				// データ取得(項目指定)
				System.out.println(rs.getString("IDX"));

				// データ取得(位置指定:1~)
				System.out.println(rs.getString(1));
			}

			System.out.println("selectTest_OK");
		} catch (Exception e) {
			System.out.println("selectTest_NG");
			throw e;
		} finally {
			if (rs != null) {
				rs.close();
				rs = null;
			}
			if (stmt != null) {
				stmt.close();
				stmt = null;
			}
		}
	}
}


			
実行結果
				
IDX
VAL
1
HELLO
1
1
selectTest_OK
connectionTest_OK

			



ページのトップへ戻る