【Java入門】データベースにアクセスする(SQLiteをEclipseに接続)
#データベースに保存している車の情報を出力する
目標:データベースにアクセスすることができる
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といフォルダを作成します)
2.1で作成したフォルダにjarファイルをいれる
3.jarファイルのパスを通す
「プロジェクト」を右クリックし「ビルド・パス」>「ビルド・パスの構成」をクリックする。
「ライブラリー」>「クラスパス」>「外部Jarの追加」をクリックし、ダウンロードしたjarファイルを選択する
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; } }