★悩み★
・JavaからSQLiteのデータを操作できるのだろうか?その手順や方法は?
・JavaでJDBC接続を用いてSQLite3のデータ取得(select)ってできる?
・JavaでSQLiteにJDBC接続しデータ追加、削除、更新する手順を知りたい。
こういった「悩み」に答えます。
★本記事の内容★
➀ JavaでJDBC接続を用いてSQLite3のデータを操作するための準備
➁ JavaでJDBC接続を用いてSQLite3のデータを取得(select)する手順
➂ JavaでJDBC接続を用いてSQLite3のデータを追加(insert)する手順
④ JavaでJDBC接続を用いてSQLite3のデータを更新(update)する手順
⑤ JavaでJDBC接続を用いてSQLite3のデータを削除(delete)する手順
これからご紹介する「JavaでSQLite3にJDBC接続しデータ操作する手順」を実践したことで、筆者は10分以内でJavaを用いてSQLite3からデータ取得(select)できました。
記事の前半では「JavaでJDBC接続を用いてSQLite3のデータを操作するための準備」をコマンドベースで紹介します。
記事の後半では「JavaでSQLite3のデータを操作(select/insert/update/delete)する手順」をサンプルプログラムを使って紹介します。
この記事を読み終えることで、「JavaでSQLite3に格納されたデータを操作できる」状態になります。
ちなみに、SQLiteのメリットとデメリットに関して知りたい方には、以下の記事がオススメです。
>> 【要点】SQLiteとは?を解消!初心者向けに特徴から使い方を解説
また、筆者が約2週間でSQLite3を学んだ方法や手順について以下で公開しています。皆様の学習の参考になれば嬉しいです。
>> SQLite3に0から入門し基本操作を習得するまでのロードマップ
JavaでJDBC接続を用いてSQLite3のデータを操作するための準備
「JavaでJDBC接続を用いてSQLite3のデータを操作するための準備」に関してご紹介します。
★JavaでJDBC接続を用いてSQLite3のデータを操作するための準備★
手順1:Javaをインストール
手順2:SQLite3のインストール
手順3:SQLite3内にテーブルを作成
手順4:SQLite3内にデータを追加(データ登録)
手順5:SQLite3向けのJDBCドライバーをダウンロード
上記の流れで、「JavaでJDBC接続を用いてSQLite3のデータを操作するための準備」ができます。
上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2022年3月7日
動作確認済み環境:
・Ubuntu 20.04.3 LTS
・CentOS/Red Hat Enterprise Linux(RHEL)
・Windows
・MacOS
以降で、上記の各手順に関してご説明します。
手順1:Javaをインストール
「手順1:Javaをインストール」に関して解説します。
JavaでJDBC接続を用いてSQLite3のデータを操作するためにも、Javaをインストールしましょう。
「Javaのインストール手順」に関しては、お使いのパソコンごとに以下の記事を参照しインストールしてください。
>> 【Ubuntu向け】Fessのインストール方法を要件から解説(Javaのインストール箇所)
>> 【CentOS/RHEL向け】Apache Hadoopを7ステップでインストールする方法
>> 【Windows向け】Fessのインストール方法を要件から解説(Javaのインストール箇所)
>> 【MacOS向け】Fessのインストール方法を要件から解説(Javaのインストール箇所)
既にJavaをインストールされている方は、本手順を省略してください。
以上で、「手順1:Javaをインストール」は完了です。
手順2:SQLite3のインストール
「手順2:SQLite3のインストール」に関して解説します。
JavaでJDBC接続を用いてSQLite3のデータを操作するためにも、SQLite3のインストールをしましょう。
「SQLite3をインストールする手順」に関しては、お使いのパソコンごとに以下の記事を参照しインストールしましょう。
>>【コピペOK】SQLite3をインストールする手順【Linux向け】
>>【コピペOK】SQLite3をインストールする手順【Ubuntu向け】
>>【最短5分】SQLiteをWindowsへインストールする方法(6枚で図解)
>>【コピペOK】SQLite3をインストールする手順【MacOS向け】
既にSQLite3をインストールされている方は、本手順を省略してください。
以上で、「手順2:SQLite3のインストール」は完了です。
手順3:SQLite3内にテーブルを作成
「手順3:SQLite3内にテーブルを作成」に関して解説します。
JavaでJDBC接続を用いてSQLite3のデータを操作するためにも、SQLite3内にテーブルを作成する必要があります。
「SQLite3内にテーブルを作成」に関しては、以下の記事をご覧ください。
>>【簡単】SQLite3でテーブルを作成する手順(create table文を解説)
既にSQLite3内にテーブル作成済みである方は、本手順を省略してください。
以上で、「手順3:SQLite3内にテーブルを作成」は完了です。
以降の手順では、上記の記事で作成した「meibo」テーブルを想定として、手順を解説します。
手順4:SQLite3内にデータを追加(データ登録)
「手順4:SQLite3内にデータを追加(データ登録)」に関して解説します。
JavaでJDBC接続を用いてSQLite3のデータを操作するために、SQLite3内のテーブルにデータを追加(データ登録)しましょう。
「SQLite3内にデータを追加(データ登録)する手順」に関しては、以下の記事をご覧ください。
>>【5分でわかる】SQLite3でデータを追加(INSERT)する3つの方法
既にSQLite3内のテーブルにデータ登録済みである方は、本手順を省略してください。
以上で、「手順4:SQLite3内にデータを追加(データ登録)」は完了です。
手順5:SQLite3向けのJDBCドライバーをダウンロード
「手順5:SQLite3向けのJDBCドライバーをダウンロード」に関して解説します。
JDBC接続でSQLite3からデータ操作するためには、SQLite3向けのJDBCドライバーが必要です。
Webブラウザを起動し、以下のサイトからJDBCドライバーをダウンロードしてください。
SQLite3向けのJDBCドライバー取得先(GitHub)
上記サイトにアクセス後、「sqlite-jdbc-バージョン名.jar」(下図の赤枠)をクリックし、SQLite3向けのJDBCドライバーをダウンロードしましょう。
以上で、「手順5:SQLite3向けのJDBCドライバーをダウンロード」は完了です。
上記の流れで、JavaでJDBC接続を用いてSQLite3からデータ操作するための準備ができました。以降で、Javaのプログラムのサンプルをご紹介します。
JavaでJDBC接続を用いてSQLite3のデータを取得する手順
「JavaでJDBC接続を用いてSQLite3のデータを取得する手順」に関してご紹介します。
★JavaでJDBC接続を用いてSQLite3のデータを取得する流れ★
手順1:JDBC接続でSQLite3のデータを取得するJavaプログラムを作成
手順2:JDBC接続でSQLite3のデータを取得するJavaプログラムの動作確認
上記の流れで、「JavaでJDBC接続を用いてSQLite3からデータ取得(select)」できます。
上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2022年3月7日
動作確認済み環境:
・Ubuntu 20.04.3 LTS
・CentOS/Red Hat Enterprise Linux(RHEL)
・Windows
以降で、上記「JavaでJDBC接続を用いてSQLite3のデータを取得する流れ」の各手順に関してご説明します。
手順1:JDBC接続でSQLite3のデータを取得するJavaプログラムを作成
「手順2:JDBC接続でSQLite3のデータを取得するJavaプログラムを作成」に関して解説します。
「JDBC接続でSQLite3のデータを取得する」Javaのプログラムを作成しましょう。
「JDBC接続でSQLite3のデータを取得する」Javaのプログラムは、以下となります。プログラム中の「適宜変更」と書いてある部分は、自分用に書き換えてください。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SelectSample {
public static void main(String[] args) throws SQLException {
String dbname = "testdb.sqlite3"; // SQLite3のファイルPATH(適宜変更)
Connection conn = null;
Statement stmt = null;
try {
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:" + dbname);
stmt = conn.createStatement();
// meiboテーブルからデータを取得(適宜変更)
ResultSet rs = stmt.executeQuery("SELECT * FROM meibo");
while (rs.next()) {
int id = rs.getInt("id"); // id列のデータを取得(適宜変更)
String name = rs.getString("name"); // name列のデータを取得(適宜変更)
System.out.println(id + "," + name); // 取得したデータを表示(適宜変更)
}
rs.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
上記のプログラムを「SelectSample.java」というファイル名で保存しましょう。
「JDBC接続でSQLite3のデータを取得する」Javaのプログラムは、以下のサイトを参考にさせていただきました。
参照:SQLite – PukiWiki
ちなみに、「selectの構文を知りたい」方には、以下の記事がオススメです。
>>【コピペOK】SQLite3でデータを取得(select)する3つの方法
以上で、「手順1:JDBC接続でSQLite3のデータを取得するJavaプログラムを作成」は完了です。
手順2:JDBC接続でSQLite3のデータを取得するJavaプログラムの動作確認
「手順2:JDBC接続でSQLite3のデータを取得するJavaプログラムの動作確認」に関して解説します。
Javaで作成した「JDBC接続でSQLite3のデータを取得する」プログラムの動作を確認しましょう。
Javaで作成した「JDBC接続でSQLite3のデータを取得する」プログラムの動作を確認するために、以下のコマンドを順番に実行してください。
# ↓ 以下のディレクトリ構成にする ↓
$ ls -ltrh
total 692M
-rw-rw-r-- 1 hero hero 9.3M Dec 7 08:50 sqlite-jdbc-3.36.0.3.jar
-rw-r--r-- 1 hero hero 683M Mar 7 22:43 testdb.sqlite3
-rw-rw-r-- 1 hero hero 1.3K Mar 7 23:19 SelectSample.java
# ↓ javacコマンドでビルド/コンパイルする ↓
# javac SelectSample.java
# ↓ .classが作成されたことを確認にする ↓
$ ls -ltrh
total 692M
-rw-rw-r-- 1 hero hero 9.3M Dec 7 08:50 sqlite-jdbc-3.36.0.3.jar
-rw-r--r-- 1 hero hero 683M Mar 7 22:43 testdb.sqlite3
-rw-rw-r-- 1 hero hero 1.3K Mar 7 23:19 SelectSample.java
-rw-rw-r-- 1 hero hero 2.0K Mar 7 23:19 SelectSample.class
# ↓ 作成された.classを実行する(JDBC接続でSQLite3のデータを取得する) ↓
$ java -classpath ".:sqlite-jdbc-3.36.0.3.jar" SelectSample
1,tom
2,hero
$
コマンド実行後、「データ」が表示された場合、「正常にJavaでSQLite3からデータ取得(select)できた」と判断できます。
以上で、「手順2:JDBC接続でSQLite3のデータを取得するJavaプログラムの動作確認」は完了です。
上記の流れで、JavaでJDBC接続を用いてSQLite3のデータを取得(select)できました。
JavaでJDBC接続を用いてSQLite3のデータを追加する手順
「JDBC接続でSQLite3のデータを追加(insert)する」Javaのプログラムは、以下となります。プログラム中の「適宜変更」と書いてある部分は、自分用に書き換えてください。
以下のプログラムは、meiboテーブルに「idが100、nameがKen」のレコードを追加します。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.PreparedStatement;
public class InsertSample {
public static void main(String[] args) throws SQLException {
String dbname = "testdb.sqlite3"; // SQLite3のファイルPATH(適宜変更)
Connection conn = null;
Statement stmt = null;
try {
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:" + dbname);
String sql = "insert into meibo(id,name) VALUES(?,?)"; //データ追加のSQL(適宜変更)
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, 100); //プレースホルダにidカラム用の値を設定(適宜変更)
ps.setString(2, "Ken"); //プレースホルダにnameカラム用の値を設定(適宜変更)
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
上記のプログラムを「InsertSample.java」というファイル名で保存しましょう。
ちなみに、「insertの構文を知りたい」方には、以下の記事がオススメです。
>>【5分でわかる】SQLite3でデータを追加(INSERT)する3つの方法
作成したプログラムの動作を確認するために、以下のコマンドを順番に実行してください。
# ↓ 以下のディレクトリ構成にする ↓
$ ls -ltrh
total 9.4M
-rw-rw-r-- 1 hero hero 9.3M Dec 7 2021 sqlite-jdbc-3.36.0.3.jar
-rw-rw-r-- 1 hero hero 1.3K Mar 7 2022 SelectSample.java
-rw-rw-r-- 1 hero hero 2.0K Mar 7 2022 SelectSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb 4 08:17 InsertSample.java
-rw-r--r-- 1 hero hero 8.0K Feb 4 08:17 testdb.sqlite3
# ↓ javacコマンドでビルド/コンパイルする ↓
# javac InsertSample.java
# ↓ InsertSample.classが作成されたことを確認にする ↓
$ ls -ltrh
total 9.4M
-rw-rw-r-- 1 hero hero 9.3M Dec 7 2021 sqlite-jdbc-3.36.0.3.jar
-rw-rw-r-- 1 hero hero 1.3K Mar 7 2022 SelectSample.java
-rw-rw-r-- 1 hero hero 2.0K Mar 7 2022 SelectSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb 4 08:17 InsertSample.java
-rw-rw-r-- 1 hero hero 1.9K Feb 4 08:17 InsertSample.class
-rw-r--r-- 1 hero hero 8.0K Feb 4 08:17 testdb.sqlite3
# ↓ 作成されたInsertSample.classを実行する(JDBC接続でSQLite3のデータを追加する) ↓
$ java -classpath ".:sqlite-jdbc-3.36.0.3.jar" InsertSample
# ↓ 前に作成したSelectSample.classを実行する(JDBC接続でSQLite3のデータを取得する) ↓
1,tom
2,hero
100,Ken
$
コマンド実行後、「追加されたデータ」が表示された場合、「正常にJavaでSQLite3にデータ追加できた」と判断できます。
上記の流れで、JavaでJDBC接続を用いてSQLite3にデータ追加できました。
JavaでJDBC接続を用いてSQLite3のデータを更新する手順
「JDBC接続でSQLite3のデータを更新(update)する」Javaのプログラムは、以下となります。プログラム中の「適宜変更」と書いてある部分は、自分用に書き換えてください。
以下のプログラムは、meiboテーブルの「idが100」である全レコードの「nameをTaro」に更新します。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.PreparedStatement;
public class UpdateSample {
public static void main(String[] args) throws SQLException {
String dbname = "testdb.sqlite3"; // SQLite3のファイルPATH(適宜変更)
Connection conn = null;
Statement stmt = null;
try {
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:" + dbname);
String sql = "update meibo set name = ? where id = ?"; //データ更新のSQL(適宜変更)
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "Taro"); //プレースホルダにnameカラム用の値を設定(適宜変更)
ps.setInt(2, 100); //プレースホルダにidカラム用の値を設定(適宜変更)
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
上記のプログラムを「UpdateSample.java」というファイル名で保存しましょう。
ちなみに、「updateの構文を知りたい」方には、以下の記事がオススメです。
>>【コピペOK】SQLite3でデータを更新(update)する2つの方法
作成したプログラムの動作を確認するために、以下のコマンドを順番に実行してください。
# ↓ 以下のディレクトリ構成にする ↓
$ ls -ltrh
total 9.4M
-rw-rw-r-- 1 hero hero 9.3M Dec 7 2021 sqlite-jdbc-3.36.0.3.jar
-rw-rw-r-- 1 hero hero 1.3K Mar 7 2022 SelectSample.java
-rw-rw-r-- 1 hero hero 2.0K Mar 7 2022 SelectSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb 4 08:17 InsertSample.java
-rw-rw-r-- 1 hero hero 1.9K Feb 4 08:17 InsertSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb 4 08:29 UpdateSample.java
-rw-r--r-- 1 hero hero 8.0K Feb 4 08:29 testdb.sqlite3
# ↓ javacコマンドでビルド/コンパイルする ↓
# javac UpdateSample.java
# ↓ UpdateSample.classが作成されたことを確認にする ↓
$ ls -ltrh
total 9.4M
-rw-rw-r-- 1 hero hero 9.3M Dec 7 2021 sqlite-jdbc-3.36.0.3.jar
-rw-rw-r-- 1 hero hero 1.3K Mar 7 2022 SelectSample.java
-rw-rw-r-- 1 hero hero 2.0K Mar 7 2022 SelectSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb 4 08:17 InsertSample.java
-rw-rw-r-- 1 hero hero 1.9K Feb 4 08:17 InsertSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb 4 08:29 UpdateSample.java
-rw-rw-r-- 1 hero hero 1.9K Feb 4 08:29 UpdateSample.class
-rw-r--r-- 1 hero hero 8.0K Feb 4 08:29 testdb.sqlite3
# ↓ 作成されたUpdateSample.classを実行する(JDBC接続でSQLite3のデータを更新する) ↓
$ java -classpath ".:sqlite-jdbc-3.36.0.3.jar" UpdateSample
# ↓ 前に作成したSelectSample.classを実行する(JDBC接続でSQLite3のデータを取得する) ↓
1,tom
2,hero
100,Taro
$
コマンド実行後、「更新されたデータ」が表示された場合、「正常にJavaでSQLite3のデータを更新できた」と判断できます。
上記の流れで、JavaでJDBC接続を用いてSQLite3のデータを更新できました。
JavaでJDBC接続を用いてSQLite3のデータを削除する手順
「JDBC接続でSQLite3のデータを削除(delete)する」Javaのプログラムは、以下となります。プログラム中の「適宜変更」と書いてある部分は、自分用に書き換えてください。
以下のプログラムは、meiboテーブルの「idが100」である全レコードを削除します。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.PreparedStatement;
public class DeleteSample {
public static void main(String[] args) throws SQLException {
String dbname = "testdb.sqlite3"; // SQLite3のファイルPATH(適宜変更)
Connection conn = null;
Statement stmt = null;
try {
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:" + dbname);
String sql = "delete from meibo where id = ?"; //データ削除のSQL(適宜変更)
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, 100); //プレースホルダに値を設定(適宜変更)
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
上記のプログラムを「DeleteSample.java」というファイル名で保存しましょう。
ちなみに、「deleteの構文を知りたい」方には、以下の記事がオススメです。
>>【コピペOK】SQLite3でデータを削除(delete)する2つの方法
作成したプログラムの動作を確認するために、以下のコマンドを順番に実行してください。
# ↓ 以下のディレクトリ構成にする ↓
$ ls -ltrh
total 9.4M
-rw-rw-r-- 1 hero hero 9.3M Dec 7 2021 sqlite-jdbc-3.36.0.3.jar
-rw-rw-r-- 1 hero hero 1.3K Mar 7 2022 SelectSample.java
-rw-rw-r-- 1 hero hero 2.0K Mar 7 2022 SelectSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb 4 08:17 InsertSample.java
-rw-rw-r-- 1 hero hero 1.9K Feb 4 08:17 InsertSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb 4 08:29 UpdateSample.java
-rw-rw-r-- 1 hero hero 1.9K Feb 4 08:29 UpdateSample.class
-rw-rw-r-- 1 hero hero 1.2K Feb 4 08:45 DeleteSample.java
-rw-r--r-- 1 hero hero 8.0K Feb 4 08:48 testdb.sqlite3
# ↓ javacコマンドでビルド/コンパイルする ↓
# javac DeleteSample.java
# ↓ DeleteSample.classが作成されたことを確認にする ↓
$ ls -ltrh
total 9.4M
-rw-rw-r-- 1 hero hero 9.3M Dec 7 2021 sqlite-jdbc-3.36.0.3.jar
-rw-rw-r-- 1 hero hero 1.3K Mar 7 2022 SelectSample.java
-rw-rw-r-- 1 hero hero 2.0K Mar 7 2022 SelectSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb 4 08:17 InsertSample.java
-rw-rw-r-- 1 hero hero 1.9K Feb 4 08:17 InsertSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb 4 08:29 UpdateSample.java
-rw-rw-r-- 1 hero hero 1.9K Feb 4 08:29 UpdateSample.class
-rw-rw-r-- 1 hero hero 1.2K Feb 4 08:45 DeleteSample.java
-rw-rw-r-- 1 hero hero 1.8K Feb 4 08:45 DeleteSample.class
-rw-r--r-- 1 hero hero 8.0K Feb 4 08:48 testdb.sqlite3
# ↓ 作成されたDeleteSample.classを実行する(JDBC接続でSQLite3のデータを削除する) ↓
$ java -classpath ".:sqlite-jdbc-3.36.0.3.jar" DeleteSample
# ↓ 前に作成したSelectSample.classを実行する(JDBC接続でSQLite3のデータを取得する) ↓
1,tom
2,hero
$
コマンド実行後、「プログラム内で指定したデータ」が表示されなかった場合、「正常にJavaでSQLite3のデータを削除できた」と判断できます。
上記の流れで、JavaでJDBC接続を用いてSQLite3のデータを削除できました。
【まとめ】JavaでSQLite3にJDBC接続しデータ操作する手順
いかがでしたでしょうか?「SQLite3用のJDBCドライバーを用いてJavaでSQLite3からデータ操作するプログラム」を解説し、以下の悩みを解決しました。
★悩み★
・JavaからSQLiteのデータを操作できるのだろうか?その手順や方法は?
・JavaでJDBC接続を用いてSQLite3のデータ取得(select)ってできる?
・JavaでSQLiteにJDBC接続しデータ追加、削除、更新する手順を知りたい。
ぜひあなたも本記事を参考に「JavaでJDBC接続を用いてSQLite3のデータ操作」を実装してみてください。
コメント