微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java.sql.SQLException:参数索引超出范围1>参数数量,为0在使用PreparedStatement时

如何解决java.sql.SQLException:参数索引超出范围1>参数数量,为0在使用PreparedStatement时

正如评论中提到的,您应该删除?中的引号。

另外,在中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,如以下函数所示

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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。