MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

JDBCでMySQLのバックスラッシュをエスケープするには?PreparedStatementの使い方を解説

PreparedStatementでバックスラッシュを安全にエスケープする

MySQLにデータを挿入する際、バックスラッシュ(\)などの特殊文字を安全に扱うには、PreparedStatementを使用するのが最も確実な方法です。PreparedStatementはパラメータを自動的にエスケープしてくれるため、手動で「\\」のように置き換える必要がなく、SQLインジェクション対策としても有効です。

まず、サンプル用のテーブルを作成しましょう。

mysql> create table DemoTable1904
    (
    ClientId int,
    ClientName varchar(20),
    ClientAge int
    );
Query OK, 0 rows affected (0.00 sec)

Javaコードの例

以下は、PreparedStatementを使ってレコードを挿入するJavaコードの例です。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class EscapeBackslashesDemo {
    public static void main(String[] args) {
        Connection con = null;
        PreparedStatement ps = null;
        try {
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/web?" + "useSSL=false", "root", "123456");
            String query = "insert into DemoTable1904(ClientId,ClientName,ClientAge) values(?,?,?) ";
            ps = con.prepareStatement(query);
            ps.setInt(1, 1001);
            ps.setString(2, "David Miller");
            ps.setInt(3, 35);
            ps.executeUpdate();
            System.out.println("1行挿入されました.....");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

このコードを実行すると、次のような出力が得られます。

JDBCでMySQLのバックスラッシュをエスケープするには?PreparedStatementの使い方を解説

テーブルのレコードを確認する

挿入されたデータを確認するために、SELECT文でテーブルの中身を見てみましょう。

mysql> select * from DemoTable1904;

実行結果は以下の通りです。

+----------+--------------+-----------+
| ClientId | ClientName   | ClientAge |
+----------+--------------+-----------+
|     1001 | David Miller |        35 |
+----------+--------------+-----------+
1 row in set (0.00 sec)

ポイントのまとめ

  • 通常のStatementの代わりにPreparedStatementを使用することで、特殊文字のエスケープ処理を自動化できます。
  • setString()などのセッターメソッドでパラメータをバインドすると、バックスラッシュやシングルクォートが適切に処理されます。
  • プレースホルダ(?)を使うことで、SQLインジェクションのリスクも大幅に低減できます。

このように、JDBCでMySQLを操作する際は、文字列を手動で連結するのではなく、必ずPreparedStatementとプレースホルダを活用しましょう。

  1. JavaでMySQLデータベースのデータを削除する方法|DELETE文の使い方を徹底解説

    MySQLデータベースからデータを削除するには、DELETEコマンドを使用します。まずは基本となる構文を確認しておきましょう。 DELETE文の基本構文 delete from テーブル名 where 条件; WHERE句で条件を指定すると、該当するレコードだけをピンポイントで削除できます。逆に条件を指定しなかった場合、テーブル内の全データが削除されてしまうため、実行前には必ず条件を確認してください。 本記事では、JavaプログラムからMySQLデータベースのデータを削除する具体的な手順を解説します。はじめにサンプル用のテーブルを作成し、テストデータを挿入していきましょう。 サンプルテーブルの

  2. PHPとMySQLでブール値を扱うには?BOOL・BOOLEAN・TINYINT(1)の違いと使い方

    本記事では、MySQL 8.0.12を使用して、ブール(Boolean)値の正しい取り扱い方を解説します。まず、使用しているMySQLのバージョンを確認しておきましょう。 mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec) MySQLにおけるブール値の基本:BOOL・BOOLEAN・TINYINT(1) MySQLでブール値を扱うには、BOOL、BOOLEAN、またはTINYINT(1)のいずれかを使用