こんにちは私はデータベースで名前の組み合わせを探しています。私は次のように組み合わせを渡します
"firstName='" + firstName + "'", "middleName='" + middleName + "'", "lastName='" + lastName + "'"
これは正常に機能します。しかし、問題は名前に「」が含まれている場合に発生します。どうすれば修正できますか?例:ジョンズやジェリーなどが例外を引き起こす
準備されたステートメントを使用するのは簡単です
ps.executeUpdate("INSERT INTO tb_name values(?,?) WHERE id=?");
ps.setString(1,firstName);
ps.setString(2,middleName);
ps.setInt(3,id);
ps.execute();
少なくともMySQLの場合は、'
前に別のものを配置する必要があります。
INSERT INTO table (column) VALUES ('this isn''t it');
Hibernateを使用している場合は、次のように使用する必要があります。
Query query = session.createQuery("from Something s where s.firstName = :firstName and s.middleName = :middleName and s.lastName = :lastName");
query.setString("firstName", firstName);
query.setString("middleName", middleName);
query.setString("lastName", lastName);
List<?> list = query.list();
SQLの単一引用符(')は、円記号でエスケープすることで無視できます\'
。
String firstName="X";
String middleName="Y";
String lastName="Z";
"firstName='" + firstName + "',middleName='" + middleName + "',lastName='" + lastName + "'";
これを使用して、次のように出力を取得できます
firstName='X',middleName='Y',lastName='Z'
これを試して:
firstName = firstName.replace("'" , "''");
代わりに PreparedStatement を使用してください。
以下も機能すると思います(少なくともMySQLの場合):
SELECT login FROM usertable WHERE lastname="O'Neil";