mizzsugar’s blog

日々感じていることや学んだことを書きます。エンジニアリング以外にも書くかもしれません。

【Java入門】データベースにアクセスする(SQLiteをEclipseに接続)

f:id:mizzsugar:20180502125153p:plain#データベースに保存している車の情報を出力する

目標:データベースにアクセスすることができる

f:id:mizzsugar:20180430121812p:plain

1 jdbcドライバーのダウンロード

今回は、SQLite用のドライバーをインストールします。

そもそも、なぜドライバーをインストールする必要ががあるのか

インターフェースからSQLに指示をするのに、以下のような指示系統を辿っています。 JDBCインターフェース ー> SQLドライバー ー> SQL

SQLは、PostgresSQLやMySQLなど、様々な種類があり、 それぞれ実行結果が同じでも、その方法が異なります。

それに対し、インターフェースは同じ方法で指示をするため、 それぞれのSQLに適した指示に変換する必要があります。

指示をSQL用のものに変換する役割を果たすのが、jdbcドライバーです。

ドライバーをインストールする方法 こちらのページがわかりやすいので、記載されている手順にそってダウンロードしてください。

https://www.kunihikokaneko.com/free/db/sqlitejava.html

2 クラスパスをセット

1.先程ダウンロードしたjarファイルをセットするためのフォルダを作成する。 (今回はlibといフォルダを作成します) f:id:mizzsugar:20180502124148p:plain

2.1で作成したフォルダにjarファイルをいれる

3.jarファイルのパスを通す

「プロジェクト」を右クリックし「ビルド・パス」>「ビルド・パスの構成」をクリックする。 f:id:mizzsugar:20180502124856p:plain

「ライブラリー」>「クラスパス」>「外部Jarの追加」をクリックし、ダウンロードしたjarファイルを選択する f:id:mizzsugar:20180502125050p:plain f:id:mizzsugar:20180502125143p:plain

3 ゲットパスのメソッドを作成

private static String getSqlite3Path() {
    return System.getProperty("user.dir") + File.separator + "sql" + File.separator + "juku.sqlite3";
}

System.getPropertyで、実行環境のプロパティを取得します。 user.dirは、アプリケーションを実行したパスを取得します。

OSによって、ファイルの区切り方が異なるので、File.separatorを指定します。

4 実装

SQLへの接続およびオブジェクトの取得を行います。

public class Car {
    private int id;
    private String name;
    private String color;
    private int fuel;
    private int distance;

    public Car(int id, String name, String color, int fuel, int distance) {
        this.id = id;
        this.name = name;
        this.color = color;
        this.fuel = 100;
        this.distance = 0;
    }

    private static String getSqlite3Path() {
        return System.getProperty("user.dir") + File.separator + "sql" + File.separator + "juku.sqlite3";
    }

    public static List<Car> fetchCars() {
        List<Car> rows = new ArrayList<Car>();

        try {
        //SQLに接続します。
            Connection connection = DriverManager.getConnection("jdbc:sqlite:" + getSqlite3Path());

        //SQL 文をデータベースに送るための Statement オブジェクトを生成します
            Statement createStatement = connection.createStatement();

         //ステートメントを作成したらSQL文を作成しデータベースに問い合わせを行います。
            ResultSet resultSet = createStatement.executeQuery("SELECT * FROM carTable;");

                       
                        //ResultSetインターフェースのオブジェクトにある各要素を配列に追加していきます。
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                String color = resultSet.getString("color");
                int fuel = resultSet.getInt("fuel");
                int distance = resultSet.getInt("distance");
                CarTable row = new CarTable(id, name, color, fuel, distance);
                rows.add(row);

            }

        } catch (SQLException e) {
            e.printStackTrace();
        }

        return rows;
    }

}