有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

mysql java。sql。SQLException参数索引超出范围

当我使用此代码时,它显示java.sql.SQLException Parameter index out of range (1 > number of parameters, which is 0)

private void cmd_searchActionPerformed(java.awt.event.ActionEvent evt) {                                           
try{

 String sql = "select * from STD where Name like '%?%' ";
      pst=conn.prepareStatement(sql);
      pst.setString(1,TXT_STUDENTNAME.getText());
      String value=TXT_STUDENTNAME.getText();
      rs=pst.executeQuery();
       jTable1.setModel(DbUtils.resultSetToTableModel(rs));

             }catch(Exception e){
       JOptionPane.showMessageDialog(null,e);
   }        
}     

如何从该异常中恢复


共 (2) 个答案

  1. # 1 楼答案

    private void cmd_searchActionPerformed(java.awt.event.ActionEvent evt) {                                           
    try{
    
     String sql = "select * from STD where Name like '%?%' ";
          String strStudentName = TXT_STUDENTNAME.getText();
          pst=conn.prepareStatement(sql);
          pst.setString(1,strStudentName );
          rs=pst.executeQuery();
           jTable1.setModel(DbUtils.resultSetToTableModel(rs));
    
                 }catch(Exception e){
           JOptionPane.showMessageDialog(null,e);
       }        
    }  
    

    我想这会对你有帮助

    String strststudentname=TXT_STUDENTNAME。getText(); 太平洋标准时间。设置字符串(1,strStudentName)

  2. # 2 楼答案

    尝试从sql中删除通配符并将其添加到值:

    String sql = "select * from STD where Name like ? ";
    pst=conn.prepareStatement(sql);
    pst.setString(1,"%"+TXT_STUDENTNAME.getText()+"%");
    

    Similar question here