class X {
public static String escape_quote(String s) {
StringBuffer buf = new StringBuffer();
for (int k = 0; k < s.length(); k++) {
char ch = s.charAt(k);
if (ch == '\'')
buf.append("''");
else
buf.append(ch);
}
return buf.toString();
}
}
置換関数の例(Perlのプロシージャ)
sub escape_quote($)
{
$_ = shift;
s/'/''/g;
return $_;
}
これらの関数は次のように呼び出す。
置換関数の呼出し例(Java)
String parameter = ユーザが入力した値;
Connection c = データベース接続オブジェクトの取得;
Statement st = c.createStatement ();
String sql = "SELECT name, price FROM product_table WHERE code='" + X.escape_quote(parameter) + "'";
ResultSet rs = st.executeQuery(sql);
String parameter = ユーザが入力した値;
Connection c = データベース接続オブジェクトの取得;
PreparedStatement st = c.prepareStatement("SELECT name, price FROM product_table WHERE code=?"); // 値を埋め込む前の形のSQL文をコンパイルし、構文を確定