Bonsoir à tous,
J'essaye de créer une table dans une base de données distante de mon PC.
J'ai pour cela deux classes, une Connection (qui ouvre et ferme les connexion à la BD), et une Requetes (qui contient, comme son nom l'indique, les requêtes que je souhaite effectuer sur la BD).
Voici mes deux fichiers :
Connection.java
Requetes.java :Code:package AccesBD; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class Connection { private String url = "", user = "", passwd = ""; public static java.sql.Connection conn; public Connection() { url = "jdbc:oracle:thin:@xxxxxxxxxxxxx:1521:orcl"; user ="monNom"; passwd = "monMdp"; } public void open() { try { Class.forName("oracle.jdbc.OracleDriver"); conn = DriverManager.getConnection(url, user, passwd); } catch (SQLException | ClassNotFoundException e) { System.out.println("Problème lors de la connection : Connection()"); System.out.println(e.getMessage()); } } public Statement createStatement() { try { return conn.createStatement(); } catch (SQLException e) { System.out.println("Problème lors de la connection : Connection.createStatement()"); System.out.println(e.getMessage()); } return null; } public void close() { try { conn.close(); } catch (SQLException e) { System.out.println("Problème lors de la connection : Connection.close()"); System.out.println(e.getMessage()); } } }
J'ai testé ce code en local (avec postgresql), et il fonctionne... Lorsque je souhaite effectuer la requête insertPlay, elle se bloque au moment de "create table if not exists ..." (d'où les println(x); afin de m'aider à voir où se trouve l'erreur).Code:package AccesBD; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; public class Requetes { private String insertPlayer = "", deletePlayer = ""; private Connection conn; public Requetes() { insertPlayer = "INSERT INTO Player(fname_player,lname_player,natio_player,atprank_player)" + "VALUES(?,?,?,?)"; deletePlayer = "DELETE FROM player where lname_player = ? and fname_player = ?"; conn = new Connection(); } public void insertPlay(String fname, String lname, String natio, int atp) { try { System.out.println("1"); conn.open(); System.out.println("2"); Statement state = conn.createStatement(); System.out.println("3"); ResultSet res = state.executeQuery("CREATE TABLE IF NOT EXISTS player" + "(id_player int NOT NULL auto_increment, fname_player varchar(255), lname_player varchar(255)," + "natio_player varchar (255), atprank int, constraint pk_player primary key (id_player))"); System.out.println("3.5"); PreparedStatement insPlay = Connection.conn.prepareStatement(insertPlayer); System.out.println("4"); insPlay.setString(1, fname); insPlay.setString(2, lname); insPlay.setString(3, natio); insPlay.setInt(4, atp); System.out.println("5"); insPlay.executeUpdate(); System.out.println("6"); conn.close(); System.out.println("7"); } catch (SQLException e) { System.out.println("Problème lors de la requête insertPlay"); System.out.println(e.getMessage()); } } public ArrayList<String> listNames() { try { ArrayList<String> names = new ArrayList(); conn.open(); Statement state = conn.createStatement(); ResultSet result = state.executeQuery("SELECT lname_player, fname_player from player"); ResultSetMetaData resultMeta = result.getMetaData(); while (result.next()) { String fname, lname, name; lname = result.getObject(1).toString(); fname = result.getObject(2).toString(); name = lname + " " + fname; names.add(name); } conn.close(); return names; } catch (SQLException | NullPointerException e) { System.out.println("Problème lors de la requête listNames"); System.out.println(e.getMessage()); } return null; } public void deletePlayer(String lastName, String firstName) { try { conn.open(); PreparedStatement delPlay = Connection.conn.prepareStatement(deletePlayer); delPlay.setString(1, lastName); delPlay.setString(2, firstName); delPlay.executeUpdate(); conn.close(); } catch (SQLException e) { System.out.println("Problème lors de la requête deletePlayer"); System.out.println(e.getMessage()); } } }
J'ai ce message d'erreur :
J'ai regardé la manière de créer une table, et la mienne me semble bonne....run:
1
2
3
Problème lors de la requête insertPlay
ORA-00922: option erronée ou absente
BUILD SUCCESSFUL (total time: 17 seconds)
Merci d'avance pour votre aide !
-----