日期:2014-05-17  浏览次数:20706 次

JDBC preparedSttement 的问题,看了半天没结果,求大神了
简单的查询用户的问题:
public User findUser(String username,String password){
User user = null;
String sql = "select * from user where username = ? and password = ?";
try {
conn = DBManager.getConn();
pstmt = DBManager.getPrepare(conn, sql);
pstmt.setString(1, username);
pstmt.setString(2, password);
result = DBManager.getResult(pstmt, sql);
while(result.next()){
user = new User();
user.setUserid(result.getInt("id"));
user.setUsername(result.getString("username"));
user.setPassword(result.getString("password"));
user.setPhone(result.getInt("phone"));
user.setAddress(result.getString("address"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

DBManager.close(result);
DBManager.close(stmt);
DBManager.close(conn);
return user;
}


提示的错误是:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? and password = ?' at line 1

小弟比较菜。大家耐心点。
jdbc preparedStatement

------解决方案--------------------
pstmt = DBManager.getPrepare(conn, sql);
pstmt.setString(1, username);
pstmt.setString(2, password);
result = DBManager.getResult(pstmt, sql);
不清楚你的DBManager是如何封装的,在使用了 conn.prepareStatement()之后,
需要使用pstmt.executeQuery()来执行sql,不能再调用pstmt.executeQuery(sql)来执行,
我估计你可能就是在这里犯错了。检查一下。
------解决方案--------------------
楼上正解
把DBManager.java代码贴出来