私prepareStatement
のプロジェクトで
問題があります 問題は、ユーザーのタイプに応じてテーブルをクエリしたいということです。つまり、ユーザーが一般の場合はuserlist
テーブルにアクセスし、ユーザーが管理者の場合はadmin
テーブル
にアクセスします。
String userid=request.getParameter("userid");
String pwd=request.getParameter("pwd");
String check = request.getParameter("radio");
String table;
String status="";
if(check.equals("General"))
table="userlist";
else
table="Administrator";
try{
String sql = "Select status from"+table+"where userid=? and pwd=?";
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/Quiz?","root","password");
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1,userid);
ps.setString(2,pwd);
ResultSet rs=ps.executeQuery();
次の例外が発生します。
Errorcom.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: SQL 構文にエラーがあります。1 行目の 'userid='nawed13593' および pwd='hello'' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
createStatement
プロジェクトがSQLインジェクションを起こしやすくなるため、使用したく
ありません 誰でもこれを解決して、上記の例外がスローされた理由を教えてください。
前もって感謝します