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

Fermé
idi - 29 mars 2008 à 11:51
 mariouma - 16 mai 2008 à 12:18
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!

2 réponses

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" +
0
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();

}
0