当前位置: 首页 > 面试题库 >

java.sql.SQLException:参数索引超出范围(1>参数数量,为0)。在使用PreparedStatement时[重复]

江礼骞
2023-03-14
问题内容

在Java / MariaDb中使用prepareStatement,如以下函数所示

public ArrayList<String> findPath(String roomName) throws SQLException, IOException, InstantiationException, IllegalAccessException, ClassNotFoundException
{
    ArrayList<String> path = new ArrayList<String>(); 
    connection = getConnection();
    String queryPattern = "SELECT `Livello_1`, `Livello_2`, `Livello_3`, `Livello_4` FROM Camera WHERE Camera.Nome = '?'";
    PreparedStatement queryStatement = connection.prepareStatement(queryPattern);
    queryStatement.setString(1, roomName);
    ResultSet rs = queryStatement.executeQuery();
    if(rs.next())
    {
        for(int i = 0; i < 3; i++)
        {
            path.add(rs.getString(i));
        }
    }
    return path;
}

我收到错误消息:

java.sql.SQLException:参数索引超出范围(1>参数数量,为0)。

错误行号指向行

queryStatement.setString(1, roomName);

问题答案:

如评论中所述,您应该删除?中的引号。

另外,在中rs.getString(i)i应为正。从1开始循环计数。

总结一下:

public ArrayList<String> findPath(String roomName) throws SQLException, IOException, InstantiationException, IllegalAccessException, ClassNotFoundException
{
    ArrayList<String> path = new ArrayList<String>(); 
    connection = getConnection();
    String queryPattern = "SELECT Livello_1, Livello_2, Livello_3, Livello_4 FROM Camera WHERE Camera.Nome = ?";
    PreparedStatement queryStatement = connection.prepareStatement(queryPattern);
    queryStatement.setString(1, roomName);
    ResultSet rs = queryStatement.executeQuery();
    if(rs.next())
    {
        for(int i = 1; i < 4; i++)
        {
            path.add(rs.getString(i));
        }
    }
    return path;
}


 类似资料:
  • 问题内容: 在Java / MariaDb中使用prepareStatement,如以下函数所示 我收到错误消息: java.sql.SQLException:参数索引超出范围(1>参数数量,为0)。 错误行号指向行 问题答案: 正如评论中提到的,您应该删除?中的引号。 另外,在中,应为正。从1开始循环计数。 总结一下:

  • 问题内容: 关闭。 这个问题需要调试细节。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 4年前关闭。 验证我选择的选择组合框后,我无法将其插入数据库中。Tomcat给出以下错误: java.sql.SQLException:参数索引超出范围(1>参数数量,为0)。 这是怎么引起的,我该如何解决? 问题答案: 当您在上调用任何方法时,都会收到此错误

  • 问题内容: 我使用java和jdbc驱动程序(java.sql),并获得了以下代码: 我得到: 在执行statement.setString(1,clinetIP)时。 这是为什么?statement.setxxx是否在语句字符串中查找问号?我在声明中使用了一个问号,但它似乎被忽略了! 问题答案: 试试这个

  • 所以我创建了这个注释: 但当我运行它时,我得到了这个异常: 无法为映射设置参数:ParameterMapping{Property='name',mode=in,javatype=class java.lang.String,JDBCType=varchar,NumericScale=null,ResultMapid='null',JDBCTypeName='null',Expression='n

  • 问题内容: 我已经开始处理我的第一个Java程序,它是一个简单的计算器,但是我得到一个错误,声称我的数组超出范围。我尝试对其进行调试,以了解这样做的原因和原因,并遵循纸上的代码,两者均显示了我期望和期望的结果。因此,我看不到问题出在哪里。代码不完整。 根据调试器,此行出现错误: 这是我当前拥有的代码的主要部分: 这是我收到的错误消息: 问题答案: 当等于中的最后一个元素索引时,则将大于最后一个元素

  • 你好,stackoverflow的好人们!我有一个奇怪的问题,我不明白。我要发布我的两个有问题的方法: 另一个: 所以,我正在根据我在网上找到的一些代码制作一个数独解算器。现在,当我试着调试程序时,我可以很好地检查一些行(并且它按照预期工作),但是一旦程序第一次在方法“resi”中调用“next”方法,它就会崩溃,出现数组索引越界异常。如果我只是尝试在不进行调试的情况下运行该程序,那么在同一方法调