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();
}
}
}このコードを実行すると、次のような出力が得られます。

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