Problème exécution requête sql avec hsqldb !

khaled001 Messages postés 156 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 8 août 2016 - 9 mars 2012 à 08:46
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 - 9 mars 2012 à 09:12
Salut

Voila ça fait un an que j'avais pas utilisé hsqldb avec java et aujourd'hui quand j'ai voulu réessayer j'arrive a créer une table mais j'arrive ni a inséré des données grâce à la commande INSERT et ni a les lire grâce a la commande SELECT enfin bref il y a un an j'avais trouvé la solution on la cherchant sur google je l'avais lu sur un forum dont hélas le topic n'existe plus aujourd'hui bref ils avaient dit que le fichier de la bdd doit être dans le même environnement que le code java a exécuté ou quelque chose comme ça je m'en rappel pas très bien j'ai essayé de me rappeler comment faire mais rien j'arrive pas a lire les donnée je sais que mon explication a l'aire un peu flou alors je vais afficher les codes :

Code pour créer la table

import java.sql.Connection;
import java.sql.DriverManager;
 
import java.sql.Statement;
 
public class Connect {
 
public static void main(String[] args) {
 
try {
Class.forName("org.hsqldb.jdbcDriver").newInstance();
System.out.println("DRIVER OK ! ");
 
Connection connexion = DriverManager.getConnection("jdbc:hsqldb:file:GESTLIB", "khaled",  "");
System.out.println("Connection effective !");	
Statement state = connexion.createStatement();
state.executeUpdate("CREATE TABLE livres (" +
"code_livre INT PRIMARY KEY," +
"titre_livre VARCHAR(30)," +
"prix_livre INT," +
"quantite_livre INT," +
"seuil_secutite_livre INT," +
"auteur_livre VARCHAR(30)," +
"editeur_livre VARCHAR(30)" +
")");
 
 
            state.close();
 
} catch (Exception e) {
e.printStackTrace();
}		
}
}


Code pour remplire la table

import java.sql.Connection;
import java.sql.DriverManager;
 
import java.sql.Statement;
 
public class Inserer {
 
public static void main(String[] args) {
 
try {
Class.forName("org.hsqldb.jdbcDriver").newInstance();
System.out.println("DRIVER OK ! ");
 
Connection connexion = DriverManager.getConnection("jdbc:hsqldb:file:GESTLIB", "khaled",  "");
System.out.println("Connection effective !");	
Statement state = connexion.createStatement();
state.executeUpdate("INSERT INTO livres (code_livre," +
            "titre_livre," +
            	"prix_livre," +
            	"quantite_livre," +
            	"seuil_securtite_livre," +
            	"auteur_livre," +
            	"editeur_livre)	VALUES ('1', 'java', '80', '100', '200', 'Dumat', 'eyrolles')" +
            	"");
 
 
            state.close();
 
} catch (Exception e) {
e.printStackTrace();
}		
}
}


quand j'essaye de creer la table livres (la bdd est créée automatiquement magie de hsqldb ) ça marche bien méme que le fichier de la bdd se crée dans le dossier C:\workspace (pour info les fichiers java se trouve dans le dossier C:\workspace\GESTLIB ) mais quand j'essaye de la remplir voila ce qui se passe :

DRIVER OK ! 
Connection effective !
java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: LIVRES
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.executeUpdate(Unknown Source)
at GESTLIB.Inserer.main(Inserer.java:19)
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: LIVRES
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.SchemaManager.getTable(Unknown Source)
at org.hsqldb.ParserDQL.readTableName(Unknown Source)
at org.hsqldb.ParserDQL.readSimpleRangeVariable(Unknown Source)
at org.hsqldb.ParserDML.compileInsertStatement(Unknown Source)
at org.hsqldb.ParserCommand.compilePart(Unknown Source)
at org.hsqldb.ParserCommand.compileStatements(Unknown Source)
at org.hsqldb.Session.executeDirectStatement(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
... 3 more


Pouvez vous m'aider svp ?

Cordialement, khaled001

1 réponse

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
9 mars 2012 à 09:12
Bonjour.
Il y a déjà un soucis au niveau de tes champs
Dans le create
state.executeUpdate("CREATE TABLE livres (" +
"code_livre INT PRIMARY KEY," +
"titre_livre VARCHAR(30)," +
"prix_livre INT," +
"quantite_livre INT," +
"seuil_secutite_livre INT," +
"auteur_livre VARCHAR(30)," +
"editeur_livre VARCHAR(30)" +
")");

Dans l'insert
state.executeUpdate("INSERT INTO livres (code_livre," +
"titre_livre," +
"prix_livre," +
"quantite_livre," +
"seuil_securtite_livre," +
"auteur_livre," +
"editeur_livre) VALUES ('1', 'java', '80', '100', '200', 'Dumat', 'eyrolles')" +
"");

Tu pourrais également rajouter des connexion.close(), pour que tes requêtes soient commité en base.
Rejoignez-nous