yuyunko's blog

ぼうびろく

Javaでsqlite3にJDBCで接続

最近Javaの勉強をしている.

そしてMySQLのめんどくささから,またRailsで正式採用されていることから
sqlite3を使ってみている.

そんなことでJavaからJDBCを用いてsqlite3に接続する方法を調べた.



まず,sqlite3に接続するコード.
パッケージはsqliteとした.

package sqlite;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBManager {

	String file;

	public DBManager(String file) {
		this.file = file;
	}

	public Connection createConnection() throws ClassNotFoundException {

		try {
			Class.forName("org.sqlite.JDBC");
			Connection con = DriverManager.getConnection("jdbc:sqlite:" + file);
			return con;

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}
}

それから実際に利用してみる.

package sqlite;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SqliteTest {

	public static void main(String[] args) throws ClassNotFoundException {

		Connection con = null;
		Statement smt = null;
		ResultSet rs = null;

		try {
			con = new DBManager("sampletest.sqlite3").createConnection();
			smt = con.createStatement();

			smt.executeUpdate("DROP TABLE IF EXISTS DRAGONTB");
			smt.executeUpdate("CREATE TABLE DRAGONTB(NAME TEXT, SENTOURYOKU INTEGER);");
			PreparedStatement prep = con
					.prepareStatement("INSERT INTO DRAGONTB VALUES (?, ?);");

			prep.setString(1, "GOKU");
			prep.setInt(2, 5000000);
			prep.addBatch();
			prep.setString(1, "BEJITA");
			prep.setInt(2, 4000000);
			prep.addBatch();
			prep.setString(1, "KURIRIN");
			prep.setInt(2, 100000);
			prep.addBatch();

			con.setAutoCommit(false);
			prep.executeBatch();

			con.commit();

			rs = smt.executeQuery("SELECT * FROM DRAGONTB;");
			while (rs.next()) {
				System.out.println("NAME = " + rs.getString("NAME"));
				System.out.println("SENTOURYOKU = " + rs.getInt("SENTOURYOKU"));
			}

		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				con.close();
				smt.close();
				rs.close();
			} catch (SQLException e) {
				// TODO: handle exception
				e.printStackTrace();
			}
		}
	}
}

結果がこう出れば成功

NAME = GOKU
SENTOURYOKU = 5000000
NAME = BEJITA
SENTOURYOKU = 4000000
NAME = KURIRIN
SENTOURYOKU = 100000

参考
SQLite3でお手軽DBプログラミング - miyohideの日記