Java、Swing、SQLiteでアプリ開発:データベース操作とJARファイル作成
Java、Swing、SQLite を使用して実行可能 JAR ファイルに SQLite データベースを含める方法
必要なもの
- Java Development Kit (JDK)
- SQLite JDBC ドライバ
- SQLite データベースファイル
- テキストエディタ
手順
-
- プロジェクトディレクトリ内に
resources
という名前のフォルダを作成します。 - SQLite データベースファイルを
resources
フォルダにコピーします。
- プロジェクトディレクトリ内に
-
SQLite JDBC ドライバをプロジェクトに追加する
- SQLite JDBC ドライバの JAR ファイルをダウンロードします。
-
データベースへの接続と操作を行うコードを書く
import java.sql.*;
public class Example {
public static void main(String[] args) {
try {
// SQLite JDBC ドライバをロード
Class.forName("org.sqlite.JDBC");
// データベースへの接続を取得
Connection connection = DriverManager.getConnection("jdbc:sqlite:resources/database.db");
// ステートメントを作成
Statement statement = connection.createStatement();
// データベース操作を実行
statement.executeUpdate("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT, password TEXT)");
statement.executeUpdate("INSERT INTO users (username, password) VALUES ('alice', 'password123')");
// 結果セットを取得
ResultSet resultSet = statement.executeQuery("SELECT * FROM users");
// 結果セットを処理
while (resultSet.next()) {
int id = resultSet.getInt("id");
String username = resultSet.getString("username");
String password = resultSet.getString("password");
System.out.println("ID: " + id + ", Username: " + username + ", Password: " + password);
}
// リソースをクローズ
resultSet.close();
statement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
-
JAR ファイルを作成する
javac -cp .:sqlite-jdbc-*.jar Example.java
jar cfm Example.jar manifest.txt Example.class resources/database.db
* 上記のコマンドは、`Example.class` ファイルと `resources` フォルダ内の `database.db` ファイルを `Example.jar` という名前の JAR ファイルにまとめます。
java -cp Example.jar Example
* 上記のコマンドは、`Example.jar` ファイル内の `Example` クラスの `main` メソッドを実行します。
補足
- 上記のコード例はあくまでも一例です。具体的な実装は、アプリケーションの要件に合わせて変更する必要があります。
- SQLite データベースファイルを JAR ファイルに埋め込むと、データベースファイルがアプリケーションと共に配布されることになります。データベースファイルに機密情報が含まれている場合は、注意が必要です。
- 代わりに、JAR ファイル外部にデータベースファイルを配置し、アプリケーション実行時にファイルを読み込む方法もあります。
Example.java ファイル
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
public class Example extends JFrame implements ActionListener {
private JLabel label;
private JTextField textField;
private JButton button;
private Connection connection;
public Example() {
super("SQLite Example");
// GUI コンポーネントを作成
label = new JLabel("Username:");
textField = new JTextField(10);
button = new JButton("Search");
// イベントリスナーを設定
button.addActionListener(this);
// レイアウトを設定
JPanel panel = new JPanel();
panel.add(label);
panel.add(textField);
panel.add(button);
getContentPane().add(panel);
// データベースへの接続
try {
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection("jdbc:sqlite:resources/database.db");
} catch (Exception e) {
e.printStackTrace();
}
// フレームの設定
setSize(300, 100);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
String username = textField.getText();
try {
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM users WHERE username = '" + username + "'");
if (resultSet.next()) {
int id = resultSet.getInt("id");
String password = resultSet.getString("password");
JOptionPane.showMessageDialog(null, "ID: " + id + ", Username: " + username + ", Password: " + password);
} else {
JOptionPane.showMessageDialog(null, "User not found");
}
resultSet.close();
statement.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
new Example();
}
}
manifest.txt ファイル
Main-Class: Example
resources/database.db ファイル
このファイルには、SQLite データベースの内容が含まれます。
javac -cp .:sqlite-jdbc-*.jar Example.java
jar cfm Example.jar manifest.txt Example.class resources/database.db
java -cp Example.jar Example
説明
Example.java
ファイルは、Swing GUI を使用して SQLite データベースにアクセスするアプリケーションを定義します。manifest.txt
ファイルは、JAR ファイルのエントリーポイントを指定します。resources/database.db
ファイルは、アプリケーションで使用される SQLite データベースです。
SQLite データベースを JAR ファイルに含めるその他の方法
以下に、その他の方法をいくつか紹介します。
Maven を使用する
Maven は、Java プロジェクトのビルドと管理を自動化するツールです。 Maven を使用すると、JAR ファイルにリソースを簡単に含めることができます。
Gradle を使用する
JAR ファイルにデータベースファイルを直接含める
resources
フォルダを使用せずに、JAR ファイルにデータベースファイルを直接含めることもできます。 ただし、この方法では、データベースファイルのパスを取得する際に注意する必要があります。
JCEF (Java Chromium Embedded Framework) を使用する
JCEF は、Java アプリケーションに Chromium エンジンを埋め込むためのフレームワークです。 JCEF を使用すると、HTML5、CSS3、JavaScript を使用して Web アプリケーションを作成できます。 Web アプリケーションで SQLite データベースを使用する場合は、データベースファイルを Web アプリケーションと同じディレクトリに配置できます。
データベースファイルを外部に配置し、アプリケーション実行時に読み込む
データベースファイルを JAR ファイルに埋め込む代わりに、データベースファイルを外部に配置し、アプリケーション実行時に読み込むこともできます。
この方法には、以下の利点があります。
- データベースファイルを簡単に更新できます。
- 複数のアプリケーションで同じデータベースを使用できます。
- データベースファイルがアプリケーションと共に配布されないため、ユーザーが手動でダウンロードしてインストールする必要がある場合があります。
- データベースファイルへのアクセスが遅くなる可能性があります。
java swing sqlite