今回、ソフト開発の過程でJavaからのデータベースアクセスを勉強していて、データベースの読み出しに成功したので記事にしてみました。
JDBCを使ってのデータベースアクセスはほぼ初めての経験なので、SQLite3の復習も兼ねて順を追ってやっていきたいと思います。
SQLite3の使い方については、Qiita:SQLite3操作コマンド関連まとめの記事でまとめてありますのでご参照ください。
環境
今回の開発環境については以下のとおりです。
- Ubuntu 18.04.5LTS
- OpenJDK 11.0.8
- SQLite3 3.22.0
データベースを作っておく
既存のデータベースから要素を読み出すために、予めデータベースを作っておきます。
sqlite3 test.db
CREATE TABLE table1(id INTEGER PRIMARY KEY, name TEXT NOT NULL);
この時点で、ディレクトリにデータベースファイルが作成されます。
INSERT文でいくつかのデータの入れておいたので、SELECT文で見てみます。
SELECT * FROM table1;
id name
---------- ----------
1 satou
2 suzuki
3 tanaka
4 katou
5 takahashi
データベースの確認が取れました。
JDBCのダウンロード
JavaからSQLite3にアクセスするには、JDBCドライバーが必要になります。
JDBCのリポジトリからJDBCをダウンロードしましょう。
バージョンは、任意のものでいいと思いますが、今回は執筆時点で最新のsqlite-jdbc-3.30.1.jar
をダウンロードします。
JDBCがダウンロードできたら、先程作成したデータベースを格納してあるディレクトリにコピーしておきましょう。
Javaプログラミング作成
今回は参考にさせていただいたサイトのコードを元に適宜変更を加えて、javaファイルを作成しました。
import java.sql.*;
public class TestDatabaseDriver {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
try {
Class.forName("org.sqlite.JDBC");
// データベースのPATHを指定。相対パスでも絶対パスでも行けるようです
connection = DriverManager.getConnection("jdbc:sqlite:test.db");
statement = connection.createStatement();
String sql = "select * from table1";
ResultSet rs = statement.executeQuery(sql);
while (rs.next()) {
System.out.println(rs.getString(1));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (statement != null) {
statement.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
javac *.java && java -classpath .:sqlite-jdbc-3.30.1.jar TestDatabaseDriver
1
2
3
4
5
この結果から、TestDAtabaseDriver.javaのSystem.out.println(rs.getString(1));
の部分で読み出す部分が決まるようなので、少し変更を加えてみましょう。
System.out.println(rs.getString(1));
System.out.println(rs.getString(1) + "|" + rs.getString(2));
実行してみます。
javac *.java && java -classpath .:sqlite-jdbc-3.30.1.jar TestDatabaseDriver
1|satou
2|suzuki
3|tanaka
4|katou
5|takahashi
まとめ
無事にデータベースを読み出すことができました。
今回は初めてのJDBCに挑戦ということで、ほとんどがコピペで終始してしまいましたが、これを元に幅を広げて、再利用性の高いものにしていきたいと思います。