java.lang.Exception:参数索引超出范围(2>;参数数,即1)

java.lang.Exception:参数索引超出范围(2>;参数数,即1),java,mysql,prepared-statement,Java,Mysql,Prepared Statement,我很想知道我为什么会犯这个错误:java.lang.Exception:参数索引超出范围(2>参数数量,即1) 是的,我用预先准备好的报表 SQL="SELECT pcsv("+servidor_virtual_nuestro+","+nivel_cuenta_receptora+","+codigo_sku[id_componente]+","+t_precio[tipo_precio]+",0) as p_unitario FROM servidores_virtuales t1"+ "

我很想知道我为什么会犯这个错误:java.lang.Exception:参数索引超出范围(2>参数数量,即1)

是的,我用预先准备好的报表

 SQL="SELECT pcsv("+servidor_virtual_nuestro+","+nivel_cuenta_receptora+","+codigo_sku[id_componente]+","+t_precio[tipo_precio]+",0) as p_unitario FROM servidores_virtuales t1"+
 "WHERE t1.id_servidor_virtual= ? ";


PreparedStatement pstm100 = this.conexion.prepareStatement(SQL);

pstm100.setInt(1, servidor_virtual_nuestro);

ResultSet rs66 =  pstm100.executeQuery();

pcsv是我创建的一个程序,所以我不知道为什么我会犯这个错误,你能帮我吗?。非常感谢

我不知道引发异常的原因,但我认为这可能是由于您创建了不正确的SQL而产生的副作用。SQL字符串需要在
t1
WHERE
之间留一个空格


或者它可能是一些额外的问号,在一些变量中。在执行之前,请尝试将SQL字符串打印到日志或
stdout

能否显示
pcsv
的代码?使用callableStatements调用StoredProcedure填充变量后,上面的SQL字符串的计算结果是什么?where子句中的“t1”是什么?这是这张桌子的别名吗?它来自servidores_virtuales t1I,我已经打印了它,同样的问题也没问题。这似乎与这个(六岁)问题无关。如果您有关于此代码的新问题,可以使用顶部的“提问”按钮发布。一定要把你的问题解释清楚。
public void ReturnUpdate() {
        String sql = "insert into returnbook (`Student Id`,`Student Name`,`Father Name`,Course,Branch,Year,Semester,`Book Id`,`Book Name`,Edition,Publisher,Price,Pages,`Date of Issue`,`Date of Return`) values ";
        try{
         pst = conn.prepareStatement(sql);
         pst.setString (1,  jTextField1.getText());
         pst.setString (2,  jTextField2.getText());
         pst.setString (3,  jTextField3.getText());
         pst.setString (4,  jTextField4.getText());
         pst.setString (5,  jTextField5.getText());
         pst.setString (6,  jTextField6.getText());
         pst.setString (7,  jTextField7.getText());
         pst.setString (8,  jTextField8.getText());
         pst.setString (9,  jTextField9.getText());
         pst.setString (10, jTextField10.getText());
         pst.setString (11, jTextField11.getText());
         pst.setString (12, jTextField12.getText());
         pst.setString (13, jTextField13.getText());
         pst.setString(15, ((JTextField)jDateChooser1.getDateEditor().getUiComponent()).getText());
         pst.execute();
           JOptionPane.showMessageDialog(null,"Book Returned");
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, e);
        }
    }