SQLite - Java: 基礎ガイド

こんにちは、未来のコードスーパースターさん!? SQLiteとJavaの素晴らしい世界にようこそ。このエキサイティングな旅であなたのガイドを務められることを嬉しく思います。私はコンピュータサイエンスを教えてきた年数がありますが、このチュートリアルの終わりには、あなたが何を達成できるか驚くことでしょう。それでは、始めましょう!

SQLite - Java

インストール

データベースの魔法を創る前に、ツールを設定する必要があります。これを、美味しい料理を作る前にキッチンを準備することに例えると良いでしょう。?

  1. まず、こちらからSQLite JDBCドライバーをダウンロードします。
  2. ダウンロードしたJARファイルをJavaプロジェクトのクラスパスに追加します。

以下のコードスニペットで、すべてが正しく設定されているか確認します:

import java.sql.*;

public class SQLiteTest {
public static void main(String[] args) {
try {
Class.forName("org.sqlite.JDBC");
System.out.println("SQLite JDBCドライバーが正常に読み込まれました!");
} catch (ClassNotFoundException e) {
System.out.println("エラー:SQLite JDBCドライバーが見つかりません。");
e.printStackTrace();
}
}
}

このコードを実行して「SQLite JDBCドライバーが正常に読み込まれました!」と表示されたら、設定は完了です!

データベースに接続

今、材料が準備できたので、料理を始めましょう!?️ データベースに接続することは、冷蔵庫を開くことと同じで、素晴らしいものを創造する第一歩です。

import java.sql.*;

public class SQLiteConnect {
public static void main(String[] args) {
Connection conn = null;
try {
String url = "jdbc:sqlite:test.db";
conn = DriverManager.getConnection(url);
System.out.println("SQLiteとの接続が確立されました。");
} catch (SQLException e) {
System.out.println(e.getMessage());
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
}
}

このコードは「test.db」という名前のSQLiteデータベースに接続します。ファイルが存在しない場合、SQLiteは自動で作成してくれます。素晴らしいですね?

テーブルの作成

今、接続が完了したので、テーブルを作成しましょう。テーブルはデータベース内のスプレッドシートと考えてください。まずは簡単な「students」テーブルを作成します。

import java.sql.*;

public class CreateTable {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";

String sql = "CREATE TABLE IF NOT EXISTS students (" +
"id INTEGER PRIMARY KEY," +
"name TEXT NOT NULL," +
"grade INTEGER" +
");";

try (Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement()) {
stmt.execute(sql);
System.out.println("テーブルが正常に作成されました!");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}

このコードは「students」という名前のテーブルを作成します。3つのカラム(id、name、grade)があります。「IF NOT EXISTS」は、テーブルが既に存在するかどうかを確認するためのものです。

INSERT操作

次に、テーブルにデータを追加します。これは、先ほど作成したスプレッドシートにデータを入力するのと同じです。

import java.sql.*;

public class InsertData {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "INSERT INTO students(name,grade) VALUES(?,?)";

try (Connection conn = DriverManager.getConnection(url);
PreparedStatement pstmt = conn.prepareStatement(sql)) {

pstmt.setString(1, "Alice");
pstmt.setInt(2, 85);
pstmt.executeUpdate();

pstmt.setString(1, "Bob");
pstmt.setInt(2, 90);
pstmt.executeUpdate();

System.out.println("データが正常に挿入されました!");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}

このコードは2人の学生をテーブルに挿入します。SQLステートメントの"?"はプレースホルダーで、setString()setInt()で値を設定します。

SELECT操作

データを追加したので、それを取得しましょう。これは、スプレッドシートから読み取るのと同じです。

import java.sql.*;

public class SelectData {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "SELECT id, name, grade FROM students";

try (Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {

while (rs.next()) {
System.out.println(rs.getInt("id") + "\t" +
rs.getString("name") + "\t" +
rs.getInt("grade"));
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}

このコードは「students」テーブルのすべてのデータを取得し、表示します。whileループは、スプレッドシートの各行を順番に読み取ります。

UPDATE操作

時々、テーブル内のデータを変更する必要があります。ここでは、Aliceの成績を更新します。

import java.sql.*;

public class UpdateData {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "UPDATE students SET grade = ? WHERE name = ?";

try (Connection conn = DriverManager.getConnection(url);
PreparedStatement pstmt = conn.prepareStatement(sql)) {

pstmt.setInt(1, 95);
pstmt.setString(2, "Alice");
pstmt.executeUpdate();
System.out.println("データが正常に更新されました!");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}

このコードはAliceの成績を95に更新します。これは、スプレッドシートのセルを消去して新しい値を書き込むのと同じです。

DELETE操作

最後に、テーブルからデータを削除する方法を学びましょう。Bobが他の学校に転校したとしましょう。

import java.sql.*;

public class DeleteData {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "DELETE FROM students WHERE name = ?";

try (Connection conn = DriverManager.getConnection(url);
PreparedStatement pstmt = conn.prepareStatement(sql)) {

pstmt.setString(1, "Bob");
pstmt.executeUpdate();
System.out.println("データが正常に削除されました!");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}

このコードはBobを「students」テーブルから削除します。これは、スプレッドシートの行を消去するのと同じです。

それでは、JavaでSQLiteを扱う基本を学びました。実践で練習を重ねることで、より複雑なデータベースアプリケーションを作成できるようになります!

以下は、私たちが使用した主要なメソッドの簡単な参照表です:

メソッド 説明
DriverManager.getConnection(url) データベースへの接続を確立します
Connection.createStatement() SQLを実行するためのStatementオブジェクトを作成します
Connection.prepareStatement(sql) パラメータ化されたSQLを実行するためのPreparedStatementを作成します
Statement.execute(sql) 結果セットを返さないSQLステートメントを実行します
Statement.executeQuery(sql) クエリを実行し、ResultSetを返します
PreparedStatement.setString(index, value) PreparedStatementのStringパラメータを設定します
PreparedStatement.setInt(index, value) PreparedStatementのintパラメータを設定します
PreparedStatement.executeUpdate() INSERT、UPDATE、またはDELETEステートメントを実行します
ResultSet.next() ResultSetの次の行に移動します
ResultSet.getInt(columnName) 現在の行のint値を取得します
ResultSet.getString(columnName) 現在の行のString値を取得します

引き続きコードを書き、学び続けてください。そして、何より楽しみましょう!??

Credits: Image by storyset