Java SQLiteにJDBC接続してinsert/update/deleteするサンプル

JavaでSQLiteにJDBC接続してinsert/update/deleteするサンプルです。

確認環境
・Windows 10
・Java 8
・Eclipse 4.7
・XAMPP 7.2.8

目次

insertのサンプル

SQLiteにJDBC接続してインサートを実行するサンプルです。

package test1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class Test1 {
    public static void main(String[] args) {

        final String URL 
        = "jdbc:sqlite:E:\\dev\\sqlite-test\\test1.db";
//      final String USER = "";
//      final String PASS = "";
        final String SQL = "insert into syain(id,name,romaji) VALUES(?,?,?)";
        
        try(Connection conn = 
                DriverManager.getConnection(URL)){

            conn.setAutoCommit(false);
            
            try(PreparedStatement ps = conn.prepareStatement(SQL)){
                ps.setString(1,"4");
                ps.setString(2,"竹田");
                ps.setString(3,"takeda");
                
                ps.executeUpdate();
                conn.commit();
            } catch (Exception e) {
                conn.rollback();
                System.out.println("rollback");
                throw e;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            System.out.println("処理が完了しました");
        }
    }
}

10行目は、SQLiteのデータベースの場所を指定しています。
11,12行目のユーザーとパスワードは、SQLiteにはありません。
13行目は、プレースホルダを使用したSQLです。(?)の箇所はプレースホルダです。
15~16,20行目は、try-with-resources構文です。リソースを自動でクローズします。
18行目は、setAutoCommitメソッドで手動コミットするようにしています。デフォルトは自動コミットモードです。自動コミットモードは、SQLを実行する毎にコミットされます。
21~23行目は、プレースホルダに値をセットしています。1つめの引数はプレースホルダの位置です。2つめの引数は値です。
26行目は、SQL処理が成功した場合で、commitメソッドを実行します。
28行目は、SQL処理で例外が発生した場合で、rollbackメソッドを実行します。

updateのサンプル

SQLiteにJDBC接続してアップデートを実行するサンプルです。

package test1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class Test1 {
    public static void main(String[] args) {
    	
        final String URL 
        = "jdbc:sqlite:E:\\dev\\sqlite-test\\test1.db";
        final String USER = "root";
        final String PASS = "";
        final String SQL 
        = "update syain set name = ? ,romaji = ? where id = ?";
        
        try(Connection conn = 
                DriverManager.getConnection(URL, USER, PASS)){

            conn.setAutoCommit(false);
            
            try(PreparedStatement ps = conn.prepareStatement(SQL)){
                ps.setString(1,"山田");
                ps.setString(2,"yamada");
                ps.setInt(3,2);
                
                ps.executeUpdate();
                conn.commit();
            } catch (Exception e) {
                conn.rollback();
                System.out.println("rollback");
                throw e;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            System.out.println("処理が完了しました");
        }
    }
}

10行目は、SQLiteのデータベースの場所を指定しています。
11,12行目のユーザーとパスワードは、SQLiteにはありません。
14行目は、プレースホルダを使用したSQLです。(?)の箇所はプレースホルダです。
16~17,21行目は、try-with-resources構文です。リソースを自動でクローズします。
19行目は、setAutoCommitメソッドで手動コミットするようにしています。デフォルトは自動コミットモードです。自動コミットモードは、SQLを実行する毎にコミットされます。
22~24行目は、プレースホルダに値をセットしています。1つめの引数はプレースホルダの位置です。2つめの引数は値です。
24行目は、DBの項目(id)の型がint型のため、setIntメソッドを使用しています。
27行目は、SQL処理が成功した場合で、commitメソッドを実行します。
29行目は、SQL処理で例外が発生した場合で、rollbackメソッドを実行します。

deleteのサンプル

SQLiteにJDBC接続して削除を実行するサンプルです。

package test1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class Test1 {
    public static void main(String[] args) {

        final String URL 
        = "jdbc:sqlite:E:\\dev\\sqlite-test\\test1.db";
//        final String USER = "";
//        final String PASS = "";
        final String SQL = "delete from syain where id = ?";
        
        try(Connection conn = 
                DriverManager.getConnection(URL)){

            conn.setAutoCommit(false);
            
            try(PreparedStatement ps = conn.prepareStatement(SQL)){
                ps.setInt(1,4);
                
                ps.executeUpdate();
                conn.commit();
            } catch (Exception e) {
                conn.rollback();
                System.out.println("rollback");
                throw e;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            System.out.println("処理が完了しました");
        }
    }
}

10行目は、SQLiteのデータベースの場所を指定しています。
11,12行目のユーザーとパスワードは、SQLiteにはありません。
13行目は、プレースホルダを使用したSQLです。(?)の箇所はプレースホルダです。
15~16,20行目は、try-with-resources構文です。リソースを自動でクローズします。
18行目は、setAutoCommitメソッドで手動コミットするようにしています。デフォルトは自動コミットモードです。自動コミットモードは、SQLを実行する毎にコミットされます。
21行目は、プレースホルダに値をセットしています。1つめの引数はプレースホルダの位置です。2つめの引数は値です。
24行目は、SQL処理が成功した場合で、commitメソッドを実行します。
26行目は、SQL処理で例外が発生した場合で、rollbackメソッドを実行します。

プレースホルダ

  • SQL文中の(?)がプレースホルダです。動的に値をセットできます。
  • 入力される不正な文字を抑止できるのでSQLインジェクション対策になります。
  • 固定文字列のSQLの部分がプリコンパイルされるので実行速度が上がります。

PreparedStatement

(補足)1.接続先のデータベースとテーブルについて

接続先のデータベースとテーブルについては、以下を参照願います。
SQLiteのインストールとSQLを実行するサンプル

(補足)2.JDBCドライバを取得する

1.SQLiteのJDBC ドライバを取得します。
以下のサイトにアクセスします。
https://bitbucket.org/xerial/sqlite-jdbc/downloads/

2.jarファイル(sqlite-jdbc-3.27.2.1.jar)をクリックするとダウンロードが始まります。

3.ダウンロードしたjarファイルを任意の場所に配置します。
sqlite-jdbc-3.27.2.1.jar

(補足)3.JDBCドライバをクラスパス(ビルドパス)に追加

JDBCドライバ(sqlite-jdbc-3.27.2.1.jar)をクラスパスに追加します。
クラスパスに追加する手順は、以下を参照願います。
Eclipse 外部jarファイルをクラスパス(ビルドパス)に設定する方法

関連の記事

SQL INSERT文のサンプル
SQL UPDATE文とDELETE文のサンプル
SQL 重複行を表示しないサンプル(distinct)
SQL 複数の行をまとめる(集約関数/group by/having)
Java SQLiteにJDBC接続してselectするサンプル

△上に戻る