Execution de requetes à partir d'un fichier texte

schub1015 Messages postés 32 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 10 juillet 2007 - 18 avril 2007 à 13:37
zieunoir Messages postés 14 Date d'inscription lundi 2 avril 2007 Statut Membre Dernière intervention 27 avril 2007 - 23 avril 2007 à 10:16
bonjour,

j'ai un ensemble de requêtes définies dans un fichier texte. Je voudrais récupérer toutes les requetes et les executer toutes en même temps :

Code :

        String fileName = "usb\" + wpName + ".sql";
        String query = "";
        FileReader fr = new FileReader(fileName);
      
        BufferedReader br = new BufferedReader(fr);
        String line = br.readLine();
        while ((line != null))
        {
            query +=line;
            query += "\n";
            line = br.readLine();
        }

        DatabaseReader dbReader = CtrlGUI.getInstance().getDbReader();
        Statement statement = dbReader.newStatement();
        ResultSet resultSet = dbReader.sendQuery(statement, query);

Le problème est que j'obtiens une erreur :

interbase.interclient.RemoteProtocolException: [interclient] Client/Server protocol error: Unrecognized network message received from InterServer:Incorrect interserver message certificate.Expecting: 20001 Received: -1
See API reference for exception interbase.interclient.RemoteProtocolException
    at java.lang.Throwable.(Compiled Code)
    at java.lang.Exception.(Compiled Code)
    at java.sql.SQLException.(SQLException.java:36)
    at interbase.interclient.SQLException.(SQLException.java:32)
    at interbase.interclient.RemoteProtocolException.(RemoteProtocolException.java:86)
    at interbase.interclient.JDBCNet.receiveMessage(Compiled Code)
    at interbase.interclient.JDBCNet.sendAndReceiveMessage(Compiled Code)
    at interbase.interclient.Statement.remote_EXECUTE_STATEMENT(Compiled Code)
    at interbase.interclient.Statement.execute(Compiled Code)

car apparemment on peut pas exécuter deux requetes l'une après l'autre.

Merci pour votre aide.

1 réponse

zieunoir Messages postés 14 Date d'inscription lundi 2 avril 2007 Statut Membre Dernière intervention 27 avril 2007
23 avril 2007 à 10:16
Je ne suis pas sur que ça passe ça :

query += "\n";

Les requetes SQL doivent se terminer par un point virgule.

Ensuite, si c'est fait en java, tu peux peut etre faire un lancement de batch qui contient plusieurs requetes SQL. L'avantage du batch est que tu ne fais qu'une seule transaction avec ton serveur et que le traitement devrait etre beaucoup plus rapide.

Zieunoir.
0
Rejoignez-nous