java.sql.SQLException : Parameter index out of range (1 > number of parameters, 即 0)。

标签 java mysql

我对这个功能有疑问

String القيمة=jTextField3.getText();
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try{
    Class.forName("com.mysql.jdbc.Driver");
    conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/cars","root","123456");
    pstmt=conn.prepareStatement("select القيمة from eradat WHERE DATE_FORMAT(التاريخ, \"%m-%Y\") = \"01-2015\";");
    pstmt.setString(1,القيمة);
    rs=pstmt.executeQuery();
    while(rs.next()){
        jTextField3.setText(rs.getString("القيمة"));
    }
}
catch(Exception e){
    JOptionPane.showMessageDialog(null, e);
}
finally{
    try{
        conn.close();
        pstmt.close();
        rs.close();
    }
    catch(Exception e){

    }
} 

我收到错误消息:java.sql.SQLException: 参数索引超出范围(1 > 参数数量,为 0)。

最佳答案

您正在尝试向查询添加参数,该查询不需要参数,只需从代码中删除 pstmt.setString(1,?????); 即可使PreparedStatement 不将任何参数绑定(bind)到查询中你给。所以try catch block 中的代码应该是这样的:

try{
  Class.forName("com.mysql.jdbc.Driver");
  conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/cars","root","123456");
  pstmt=conn.prepareStatement("select القيمة from eradat WHERE DATE_FORMAT(التاريخ, \"%m-%Y\") = \"01-2015\";");
  rs=pstmt.executeQuery();
  while(rs.next()){
    jTextField3.setText(rs.getString("القيمة"));
  }
}
catch(Exception e){
  JOptionPane.showMessageDialog(null, e);
}

如果您需要为查询设置参数,那么您需要在其中使用占位符?,在这种情况下您将能够在查询中设置一个值。那么 qiuery 可能是这样的:

select القيمة from eradat WHERE DATE_FORMAT(التاريخ, \"%m-%Y\") = \"?\";

您可以使用以下命令为 where 子句设置一个值

pstmt.setString(1,"01-2015");

关于java.sql.SQLException : Parameter index out of range (1 > number of parameters, 即 0)。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32684783/

相关文章:

java - 如何从汉明球中的一个字节计算所有最近的邻居

Mysql - "group by group_concat()"的可能解决方案?

android - 如何从 Android 应用程序通过 PHP 连接 MySQL 服务器?

c++ - C++ 动态 mysql 查询

php - Foreach 仅返回一个输出

java - Tomcat 无法在 Ubuntu Core 上运行

java - 如何在 Beanshell 中使用或转义 java 8 Lambda 表达式

java - BaseAdapter 的relativelayout addRule 工作得不太好

java - 将 SortedList 比较器绑定(bind)到 TableView 比较器会删除排序

mysql - 简化查询(使用左外连接)