SQLiteとJavaの連携でデータベース操作をもっと便利に
JavaでSQLiteに接続する方法
Javaを使ってSQLiteデータベースに接続するには、以下の手順が必要です。
SQLite JDBCドライバを導入する
JavaからSQLiteにアクセスするには、JDBCと呼ばれるデータベースアクセス用のライブラリが必要です。SQLite用のJDBCドライバはいくつかありますが、代表的なものは以下の2つです。
これらのドライバは、jarファイル形式で提供されています。ダウンロードしたjarファイルを、プロジェクトのクラスパスに追加する必要があります。
データベース接続を開く
JDBCドライバを導入したら、データベース接続を開くことができます。データベース接続を開くには、以下のコードを使用します。
import java.sql.*;
public class ConnectSQLite {
public static void main(String[] args) {
try {
// データベース接続URL
String url = "jdbc:sqlite:test.db";
// 接続オブジェクトの作成
Connection con = DriverManager.getConnection(url);
System.out.println("データベース接続成功!");
// 接続を閉じる
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
このコードでは、jdbc:sqlite:test.db
というURLを使って、test.db
という名前のデータベースに接続しています。データベースファイルが現在のディレクトリにある場合、上記のURLで接続できます。データベースファイルが別の場所にある場合は、その場所を指定する必要があります。
データベース操作を行う
データベース接続を開いたら、データベースに対して様々な操作を実行できます。例えば、以下のことができます。
- データの挿入
- データの更新
- データの削除
- データの検索
これらの操作を行うには、Statement
やPreparedStatement
などのオブジェクトを使用します。
データベース操作が完了したら、データベース接続を閉じる必要があります。データベース接続を閉じないと、データベースリソースが解放されずに、メモリリークが発生する可能性があります。
データベース接続を閉じるには、以下のコードを使用します。
con.close();
- SQLiteは、軽量で使いやすいデータベースエンジンです。そのため、個人用のアプリケーションや、プロトタイプの開発などに適しています。
- 業務用のアプリケーション開発には、MySQLやPostgreSQLなどのエンタープライズ向けデータベースを使用するのが一般的です。
import java.sql.*;
public class CreateDB {
public static void main(String[] args) {
try {
// データベース接続URL
String url = "jdbc:sqlite:test.db";
// 接続オブジェクトの作成
Connection con = DriverManager.getConnection(url);
// ステートメントオブジェクトの作成
Statement stmt = con.createStatement();
// テーブル作成SQL
String sql = "CREATE TABLE users ( "
+ "id INTEGER PRIMARY KEY AUTOINCREMENT, "
+ "name TEXT NOT NULL, "
+ "email TEXT UNIQUE NOT NULL "
+ ")";
// テーブルの作成
stmt.executeUpdate(sql);
System.out.println("テーブル作成成功!");
// 接続を閉じる
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
このコードでは、test.db
という名前のデータベースに接続し、users
という名前のテーブルを作成します。users
テーブルには、id
、name
、email
という3つの列があります。
データの挿入
import java.sql.*;
public class InsertData {
public static void main(String[] args) {
try {
// データベース接続URL
String url = "jdbc:sqlite:test.db";
// 接続オブジェクトの作成
Connection con = DriverManager.getConnection(url);
// プリーペアドステートメントオブジェクトの作成
String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
PreparedStatement pstmt = con.prepareStatement(sql);
// パラメータの設定
pstmt.setString(1, "田中 太郎");
pstmt.setString(2, "[email protected]");
// データの挿入
pstmt.executeUpdate();
System.out.println("データ挿入成功!");
// 接続を閉じる
pstmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
データの検索
import java.sql.*;
public class SelectData {
public static void main(String[] args) {
try {
// データベース接続URL
String url = "jdbc:sqlite:test.db";
// 接続オブジェクトの作成
Connection con = DriverManager.getConnection(url);
// ステートメントオブジェクトの作成
Statement stmt = con.createStatement();
// データ検索SQL
String sql = "SELECT * FROM users";
// ResultSetオブジェクトの作成
ResultSet rs = stmt.executeQuery(sql);
// 検索結果の取得
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String email = rs.getString("email");
System.out.println("ID: " + id + ", 名前: " + name + ", メールアドレス: " + email);
}
// ResultSetオブジェクトのクローズ
rs.close();
// 接続を閉じる
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
このコードでは、test.db
データベースのusers
テーブルにあるすべてのデータを取得します。取得したデータは、コンソールに出力されます。
データの更新
import java.sql.*;
public class UpdateData {
public static void main(String[] args) {
try {
// データベース接続URL
String url = "jdbc:sqlite:test.db";
// 接続オブジェクトの作成
Connection con = DriverManager.getConnection(url);
// プリーペアドステートメントオブジェクトの作成
String sql = "UPDATE users SET email = ? WHERE id = ?";
PreparedStatement pstmt = con.prepareStatement(sql);
// パラメータの設定
pstmt.setString(1, "[email protected]");
pstmt.setInt(2, 1);
// データの
HikariCPを使う
HikariCPは、Java用の接続プールライブラリです。接続プールを使うことで、データベース接続の確立と開放にかかる時間を短縮することができます。
HikariCPを使うには、以下の手順が必要です。
- HikariCPのjarファイルをプロジェクトのクラスパスに追加する。
- 以下のコードのように、HikariCPを使って接続オブジェクトを作成する。
import com.zaxxer.hikari.HikariCP;
import com.zaxxer.hikari.HikariDataSource;
public class ConnectSQLiteWithHikariCP {
public static void main(String[] args) {
try {
// データベース接続情報
String jdbcUrl = "jdbc:sqlite:test.db";
String username = "user";
String password = "pass";
// HikariCPの設定
HikariCP.HikariConfig config = new HikariCP.HikariConfig();
config.setJdbcUrl(jdbcUrl);
config.setUsername(username);
config.setPassword(password);
config.setMaximumPoolSize(20); // 最大接続数
// データベース接続オブジェクトの作成
HikariDataSource ds = new HikariDataSource(config);
// 接続オブジェクトの作成
Connection con = ds.getConnection();
System.out.println("データベース接続成功!");
// 接続を閉じる
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
JPAを使う
JPAは、Java Persistence APIの略称で、エンティティクラスとデータベースマッピングを自動的に行うためのフレームワークです。JPAを使うことで、データベース操作をより簡単に記述することができます。
JPAを使うには、以下の手順が必要です。
- JPAライブラリをプロジェクトのクラスパスに追加する。
- エンティティクラスを作成する。
- persistence.xmlファイルを作成する。
- 以下のコードのように、EntityManagerを使ってデータベース操作を行う。
import javax.persistence.*;
public class JPATest {
@Entity
@Table(name = "users")
public static class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "email")
private String email;
// getter/setter省略
}
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistence-unit");
EntityManager em = emf.createEntityManager();
// データの挿入
User user = new User();
user.setName("田中 太郎");
user.setEmail("[email protected]");
em.persist(user);
// データの検索
User retrievedUser = em.find(User.class, 1L);
System.out.println("名前: " + retrievedUser.getName());
System.out.println("メールアドレス: " + retrievedUser.getEmail());
// 接続を閉じる
em.close();
emf.close();
}
}
Spring Data JPAを使う
Spring Data JPAは、JPAの上に構築されたフレームワークで、さらに操作を簡略化することができます。Spring Data JPAを使うには、Spring BootなどのSpringフレームワークを使用する必要があります。
Spring Data JPAを使うには、以下の手順が必要です。
- Spring Bootプロジェクトを作成する。
- pom.xmlファイルにSpring Data JPAの依存関係を追加する。
- 以下のコードのように、Spring Data JPAのRepositoryを使ってデータベース操作を行う。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.*;
@SpringBootApplication
public class SpringDataJPATest {
@Entity
@Table(name = "users")
public static class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "email")
private String email;
// getter/setter省略
}
java sqlite jdbc