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文をコンパイルし、構文を確定