Rechercher : dans
Par :

Problème de requête pour une base de donnée

Dernière réponse le 16 mai 2008 à 12:18:08 idi, le 29 mar 2008 à 11:51:11 
 Signaler ce message aux modérateurs

Bonjour,

Je dois faire un mini projet pour apprendre à créer et gérer une base de donnée et le problème c'est que ne semble pas être très doué pour la programmation. Voici mon souci : je dois créer une table sur dans une base de donnée derby en java. Et comme par hasard, ca ne marche pas! Voici le programme incriminé

*/
public class BdD {

public static Connection defaultConnection = BdD.connect();

public static Connection connect() {
try {
Connection con;
Class.forName("org.apache.derby.jdbc.ClientDriver");
String DataBaseURL = "jdbc:derby://localhost:1527/Messagerie";
String userName = "titi";
String login = "caca";
con = DriverManager.getConnection(DataBaseURL, userName, login);
return con;
} catch (Exception Ex) {
throw new Error(Ex);
}
}

public static void creerTablePersonne() {
try {
Connection con = BdD.defaultConnection;
Statement st = con.createStatement();
String CreationTablePersonne = "create table Personne ( \n " +
" id integer not null, \n" +
" nom varchar (50) not null \n" +
" prenom varchar (50) not null \n" +
" MotDePasse varchar (10) not null)" +
"";
st.executeUpdate(CreationTablePersonne);
} catch (Exception Ex) {
throw new Error(Ex);
}
}

public static void creerTableMessage() {
try {
Connection con = BdD.defaultConnection;
Statement st = con.createStatement();
String CreationTableMessage =
"create table Message ( \n " +
" Emmeteur integer not null, \n" +
" Destinataire integer not null \n" +
" Message VARCHAR(100) not null)\n" +
"";

st.executeUpdate(CreationTableMessage);
} catch (Exception Ex) {
throw new Error(Ex);
}
}

public static void main(String[] args) {
BdD.creerTableMessage();
BdD.creerTablePersonne();
}
}



Programme très simple comme vous pouvez le voir (programme de test en fait) et voici le message d'erreur

deps-jar:
Compiling 1 source file to C:\Documents and Settings\IDI\Bureau\Projet\prog\Messagerie\build\classes
compile:
run:
Exception in thread "main" java.lang.Error: java.sql.SQLException: Erreur de syntaxe : Encountered "Message" at line 4, column 2.
at fr.insa.a2008.ba.messagerie.BdD.creerTableMessage(BdD.java:62)
at fr.insa.a2008.ba.messagerie.BdD.main(BdD.java:67)
Caused by: java.sql.SQLException: Erreur de syntaxe : Encountered "Message" at line 4, column 2.
at org.apache.derby.client.am.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
at org.apache.derby.client.am.Statement.executeUpdate(Unknown Source)
at fr.insa.a2008.ba.messagerie.BdD.creerTableMessage(BdD.java:60)
... 1 more
Caused by: org.apache.derby.client.am.SqlException: Erreur de syntaxe : Encountered "Message" at line 4, column 2.
at org.apache.derby.client.am.Statement.completeSqlca(Unknown Source)
at org.apache.derby.client.am.Statement.completeExecuteImmediate(Unknown Source)
at org.apache.derby.client.net.NetStatementReply.parseEXCSQLIMMreply(Unknown Source)
at org.apache.derby.client.net.NetStatementReply.readExecuteImmediate(Unknown Source)
at org.apache.derby.client.net.StatementReply.readExecuteImmediate(Unknown Source)
at org.apache.derby.client.net.NetStatement.readExecuteImmediate_(Unknown Source)
at org.apache.derby.client.am.Statement.readExecuteImmediate(Unknown Source)
at org.apache.derby.client.am.Statement.flowExecute(Unknown Source)
at org.apache.derby.client.am.Statement.executeUpdateX(Unknown Source)
... 3 more
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)


Si je comprend bien ma requêtre pour ma seconde table est fausse sur la ligne message. Mais alors pourquoi?

De plus, j'ai une petite question : y a t'il un format plus approprié pour stocker un message volumineux que les varchar? Si non, quelle la taille maxi d'un varchar?


Merci d'avance pour votre aide!

Configuration: Windows XP
Internet Explorer 6.0
Net beans 6.0

Meilleures réponses pour « problème de requête pour une base de donnée » dans :
Afficher le nom des base de données Oracle VoirPour afficher le nom des bases de données Oracle ainsi que les données s'y référant, il suffit de lancer la commande : SELECT * FROM V$DATABASE;
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...
Bases de données - Introduction VoirQu'est-ce qu'une base de données ? Une base de données (son abréviation est BD, en anglais DB, database) est une entité dans laquelle il est possible de stocker des données de façon structurée et avec le moins de redondance possible. Ces données...
Importer et exporter des données sous MySQL VoirImportation et exportation Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...

1

bal35, le 5 mai 2008 à 09:40:18

Il manque les virgules entre les champs des tables des lignes de commande SQL


" nom varchar (50) not null , \n" +
" prenom varchar (50) not null , \n" +

" Destinataire integer not null , \n" +

Répondre à bal35

2

 mariouma, le 16 mai 2008 à 12:18:08

Essai ce code pour moi ça marche

//préciser le driver
try {
Class.forName("org.apache.derby.jdbc.ClientDriver");
System.out.println("Driver OK");

} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
System.out.println("Driver Not Ok");
e1.printStackTrace();


}
//connection à la base de données

String url="jdbc:derby://localhost:1527/sample";

try {
java.sql.Connection con=DriverManager.getConnection(url,"administrateur","1111");
System.out.println("connection établie");
//créer instance JDBC

java.sql.Statement stmt= con.createStatement();
//stmt.executeUpdate("CREATE TABLE operation ( Num INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),num_operation varchar (20),nom_op varchar(20),seri varchar(20),temp FLOAT,nbopera INTEGER, nboutil INTEGER)");
stmt.executeUpdate("CREATE TABLE nom_de_la-tablel (champs1 TYPE, champs2 TYPE....)");

con.close();
} catch (SQLException e1)
{
// TODO Auto-generated catch block
System.out.println("connection failed");
e1.printStackTrace();

}

Répondre à mariouma