我的项目中prepareStatement
有问题问题我想根据用户类型查询表格,即如果用户是普通用户则访问{ {1}}表,如果用户是管理员,则访问userlist
表
我尝试过:
admin
我得到以下例外:
Errorcom.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:你 您的SQL语法有错误;检查对应的手册 您的MySQL服务器版本,以便在附近使用正确的语法 'userid ='nawed13593'和pwd ='hello''在第1行
我不想使用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();
,因为这会使我的项目容易出现sql注入
任何人都可以帮我解决这个问题以及抛出上述异常的原因吗?
提前感谢
答案 0 :(得分:3)
您的表名之前或之后没有任何空格。在“管理员”案例中,您将结束这一点:
Select status fromAdministratorwhere userid=? and pwd=?
在SQL语句字符串中插入空格:
// v v
String sql = "Select status from "+table+" where userid=? and pwd=?";