【问题标题】: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=?'您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 '? 附近使用的正确语法。和密码=?
【发布时间】:2015-12-02 15:49:28
【问题描述】:

感谢您访问我的问题 :D 我试图完成我的项目,但我遇到了 sql 问题。 这是我的代码,我不知道为什么也不知道要修复它。 我使用 java ee - Eclip 来做到这一点。 (我创建 JSP 网站)

try{                     
    String sql = "SELECT User_Name, Password, Gender FROM User_Account WHERE User_Name=? AND password=? ";
    PreparedStatement pstm= conz.prepareStatement(sql);                 
    ResultSet rs=pstm.executeQuery(sql);         
    String user_name=null;
    String pass_word=null;

    while(rs.next()){
        user_name=rs.getString(1);
        pass_word=rs.getString(2);

         }

if(user_name.equals(userName)&&pass_word.equals(password)){
    response.sendRedirect(request.getContextPath() + "/userInfo");
    hasError = true;
    errorString = "Connected ";
} else {               
    hasError = true;
    errorString = "Wrong user or pass!"              
} 

运行时会显示一条通知“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以了解在 '? AND password=?' 附近使用的正确语法。在第 1 行" 请帮我修复它。 提前致谢。

【问题讨论】:

  • 您的用户名和密码是什么?基于它,您将从 DB 获得 All Row,请替换?通过适当的价值
  • 设置 ? (用户名,密码)在您准备好的语句中
  • 感谢您的帮助。我解决了这个问题,但我不知道这是什么?参数索引超出范围(1 > 参数数量,即 0)。

标签: java jsp jakarta-ee


【解决方案1】:

如果您设置了 ? 标记,则必须填充它们:

String sql = "SELECT User_Name, Password, Gender FROM User_Account WHERE User_Name=? AND password=? ";
PreparedStatement pstm= conz.prepareStatement(sql); 
pstm.setString(1,"John Doe");
pstm.setString(2,"12345");
ResultSet rs=pstm.executeQuery();

这样做,您的 SQL 语法就会正确。

【讨论】:

  • 谢谢,我按照您的教程进行操作,但后来我遇到了这样的新问题。参数索引超出范围(1 > 参数数量,即 0)。我不知道为什么,你能帮帮我吗?
  • 试试 getString("user_name") 和 getString("password")
猜你喜欢
  • 2015-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-07
  • 2012-05-02
  • 2013-07-14
相关资源
最近更新 更多