Connexion jdbc

Résolu/Fermé
wiam_ Messages postés 169 Date d'inscription samedi 1 mars 2008 Statut Membre Dernière intervention 11 août 2013 - 2 déc. 2008 à 21:13
wiam_ Messages postés 169 Date d'inscription samedi 1 mars 2008 Statut Membre Dernière intervention 11 août 2013 - 4 déc. 2008 à 00:20
Bonsoir tout le monde ,
pour tester ma connexion jdbc ,sous oracle j'ai creer une base de donne de test tout marche bien :
CREATE TABLE base (
NumIndividu integer NOT NULL ,
NomIndividu integer ,
PRIMARY KEY(NumIndividu));



insert into base values ('3','3');

insert into base values ('4','5');
select * from base ;


il affiche ca :

CREATE TABLE succeeded.
1 rows inserted
1 rows inserted
NUMINDIVIDU NOMINDIVIDU
---------------------- ----------------------
3 3
4 5

2 rows selected


et pour se connecter a partir un programme java j'ai creer la classe suivante :

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class basedetest {
Connection co ;
ResultSet res;
Statement st ;

public void openConnection(String url) {

try{
Class.forName("oracle.jdbc.driver.OracleDriver");
co = DriverManager.getConnection(url);
}
catch (ClassNotFoundException e){
System.out.println("impossible de charger le driver");
System.exit(1);
}
catch (SQLException s){
System.out.println("impossible d'etablir la connexion");
System.exit(2);
}
}
public void execRequete(String requete){

try{

st = co.createStatement() ;
res = st.executeQuery(requete) ;

while (res.next()){
System.out.println("ok");
for(int i=0;i<2;i++){
System.out.println(res.getString(i)+"\t");
}
}
}
catch(SQLException s){
System.out.println("requete impossible") ;
}
}

public void closeConnection(){
try{
res.close();
st.close() ;
co.close();
System.out.println( "connexion fermé");

}catch(SQLException e){
System.out.println("impossible de fermer la connexion");
System.exit(1);
}
}
}

et voici le main :

import java.sql.SQLException;

public class app {

/**
* @param args
*/
public static void main(String[] args) throws ClassNotFoundException,SQLException{
String url="jdbc:oracle:thin:login/pass@localhost:1521:xe" ;
String req = "select * from test";
basedetest c = new basedetest();
c.openConnection(url);
c.execRequete(req);
c.closeConnection();
}

}


mais à l'execution de la requete i m'affiche toujours requete impossible sachant que le login et le mot de passe fonctionnent bien .MERCI à vous je serais tres reconnaissante si vous pouuvez m'aider
A voir également:

6 réponses

sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
2 déc. 2008 à 22:04
Hello,

Ajoute une ligne printStackTrace dans chaque partie catch des try..catch. On s'en fout des
System.out.println("requete impossible")...

Poste par ici la sortie console du printstacktrace (au besoin, car très probablement elle sera suffisante pour que tu rectifies le tir toute seule).

++
0
wiam_ Messages postés 169 Date d'inscription samedi 1 mars 2008 Statut Membre Dernière intervention 11 août 2013 8
2 déc. 2008 à 22:30
merci pour ta reponse mais je sais pa comment je doit utiliser printStackTrace , en fait j'ai jamais utilise , est ce qu'il faut creer une methode ou quoi ?
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
3 déc. 2008 à 00:13
Euh... Est-ce que tu as jamais essayé de faire une recherche? https://www.google.fr/search?client=firefox-a&rls=org.mozilla%3Afr%3Aofficial&channel=s&hl=fr&q=printstacktrace&meta=&btnG=Recherche+Google&gws_rd=ssl ramène 1 040 000 résultats.

Un clic sur le 1er des résultats retournés ==> documentation Java 1.4. Ca date un peu, mais toujours valable. On apprend que printStackTrace() est une méthode de la classe Throwable. La classe Exception hérite de Throwable, donc elle possède aussi cette méthode.

Du coup, l'utilisation est super giga méga simple:

try {
  metodePouvantLancerUneException();
} catch (Exception ex) {
  ex.printStackTrace();
}


Voilou :-)
++
0
wiam_ Messages postés 169 Date d'inscription samedi 1 mars 2008 Statut Membre Dernière intervention 11 août 2013 8
3 déc. 2008 à 23:15
merci, maintenant ca marche bien en fait il y a pas d'erraur dans le code java , il fallait juste faire un COMMIT apres la creation de la BD c tt bete mais ......
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
3 déc. 2008 à 23:24
Mmmh? Bizarre.

CREATE TABLE base (.... <== pas de commit à effectuer. Pas sur un ordre DDL.


insert into base values ('3','3');

insert into base values ('4','5'); <== commit OK ici après des instructions DML.

Maintenant, supposons que le commit manque. Donc pas de valeurs dans la table base (mais la table existe). Aucun souci pour le code, car la boucle while(res.next()) empêchera l'exécution. Donc ???

Seule possibilité: je vois que tu as un
create table base ...

et dans le code JAva tu faisais un

select * from test

Comme "base" n'est pas la même chose que "test", on a une erreur.

++
0
wiam_ Messages postés 169 Date d'inscription samedi 1 mars 2008 Statut Membre Dernière intervention 11 août 2013 8
4 déc. 2008 à 00:20
non mais j'ai changé test apres et ca marchait pa non plus , en fait ce que j'ai compris si on fait pas le commit la base de donne n'est pa enregistré meme s'elle est crée , par contre j'ai un autre probleme sous sql developper quand je supprime une connexion qui contient deja des tables et je crée une autre ,la dieuxieme que je viens de creer contient les meme table que celle qui est supprimée , soit les deux connexions elles ont le meme ou pa . ce qui est chiant comme meme . si qql à une solution je serais tres reconnaissante.MERCI à vous
0