SQLException: ORA-01008: toutes les variables ne sont pas liées - erreur SQL utilisant java pour interroger la base de données JDBC


        Statement stmt = con.createStatement();

        String pubBooks = "select title_name " +
                "from publisher, title " +
                "where pub_name = ? " +
                "and publisher.pub_no = title.pub_no " +
                "order by title_name";
        ResultSet rS = stmt.executeQuery(pubBooks);
        stmt.close();
        String pubss = "Irwin";
        PreparedStatement pStmt = 
            con.prepareStatement(pubBooks);
        pStmt.setString(1, pubss);
        pStmt.executeUpdate();

Hé, j'essaie d'utiliser JDBC pour interroger ma base de données sur la liste des titres de livres produits par cet éditeur, mais je rencontre l'erreur java.SQL.SQLException: ORA-01008: toutes les variables ne sont pas liées. J'ai essayé tout ce à quoi je peux penser, mais je ne sais tout simplement pas quoi faire à ce stade.

Author: user2793442, 2014-03-29

2 answers

Vous étiez proche d'essayer PreparedStatement, sauf que vous venez d'appeler la mauvaise méthode "execute". Utilisez le executeQuery() méthode pour retourner votre ResultSet.

PreparedStatement pStmt = 
con.prepareStatement(pubBooks);
pStmt.setString(1, pubss);
ResultSet rS = pStmt.executeQuery();
 3
Author: rgettman, 2014-03-29 00:22:55

L'instruction

Ne peut pas être utilisée lors de la fourniture de paramètres à la requête, utilisez PreparedStatement. Vous avez peut-être réviser votre code comme ci-dessous:

    String pubBooks = "select title_name " +
            "from publisher, title " +
            "where pub_name = ? " +
            "and publisher.pub_no = title.pub_no " +
            "order by title_name";

    String pubss = "Irwin";

    PreparedStatement pStmt =  con.prepareStatement(pubBooks);
    pStmt.setString(1, pubss);
    ResultSet rS = pStmt.executeQuery();

    //TODO: code to use resultset rS

    rS.close();
    pstmt.close();
 1
Author: Aswani_Chitta, 2014-03-29 00:38:24