だから私のプログラムでは:
private static final String GET_USERS_BY_PARAMS = "select * from user t "
+ "where t.id like %?% "
+ "AND t.name LIKE %?% "
+ "AND t.location LIKE %?% "
+ "AND t.telephone LIKE %?% ";
上記のすべてのパラメータは、varcharとしてデータベースに保存されます。
しかし、私が以下を実行すると:
statement = connection.prepareStatement(GET_USERS_BY_SEARCH_PARAMS);
statement.setString(1, userID);
statement.setString(2, name);
statement.setString(3, location);
statement.setString(4, telephone());
rs = statement.executeQuery();
無効な文字があったことを示すSQL例外が発生します。アプリケーションはexecuteQueryでエラーをスローするため、パラメーターの設定は問題になりません。正確なユーザーIDや名前などを入力しなくても検索できるように、%記号を使用することになったのではないかと思いました。
事前に助けてくれてありがとう!