LoginSignup
3
5

More than 3 years have passed since last update.

【JDBC ①】JavaからSQLite3のデータベースにアクセスしてみた。

Last updated at Posted at 2020-08-09

今回、ソフト開発の過程でJavaからのデータベースアクセスを勉強していて、データベースの読み出しに成功したので記事にしてみました。
JDBCを使ってのデータベースアクセスはほぼ初めての経験なので、SQLite3の復習も兼ねて順を追ってやっていきたいと思います。

SQLite3の使い方については、Qiita:SQLite3操作コマンド関連まとめの記事でまとめてありますのでご参照ください。

環境

今回の開発環境については以下のとおりです。

  • Ubuntu 18.04.5LTS
  • OpenJDK 11.0.8
  • SQLite3 3.22.0

データベースを作っておく

既存のデータベースから要素を読み出すために、予めデータベースを作っておきます。

データベースを作成
sqlite3 test.db
table1を定義
CREATE TABLE table1(id INTEGER PRIMARY KEY, name TEXT NOT NULL);

この時点で、ディレクトリにデータベースファイルが作成されます。
testJDBC_Qiita.png

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ファイルを作成しました。

TestDAtabaseDriver.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に挑戦ということで、ほとんどがコピペで終始してしまいましたが、これを元に幅を広げて、再利用性の高いものにしていきたいと思います。


本記事目次ページ

【データベース】SQLite3・JDBCまとめ


参考サイト

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5