[JDBC] Erreur très bizarre dans ExecuteQuery
Bonjour, j'ai fait un programme qui se connecte à une base de données etqui permet d'éxecuter des requetes sql. La base est une base oracle. Mon problème c'est que mes requetes ne renvoient pas de ResultSet !!
Je précise que mes requetes marchent quand je les tape à l'identique sous sqlplus et que la connexion à la base de données fonctionne sans problèmes.
voici une partie de la classe session qui gère les acces à la base :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
import java.sql.*;
public class Session3 {
private Connection connec;
public Session3(String login, String mdp) throws SQLException {
// CHARGEMENT du driver JDBC ORACLE
try{
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
}
catch(SQLException e){
System.out.println("Driver de connection a la base Oracle non trouve");
}
// CONNECTION à la base de données
try {
connec = DriverManager.getConnection("jdbc:oracle:thin:@infolin:1521:DB01", login, mdp);
}
catch (SQLException sqle) {
sqle = new SQLException();
throw sqle;
}
}
public void listeEmployes(int unNuServ) throws SQLException{
try {
String sql ="SELECT nuempl, nomempl, hebdo, nomserv FROM employe, service WHERE employe.affect = service.nuserv AND service.nuserv = ?;";
PreparedStatement pStmtListeEmployes = connec.prepareStatement(sql);
pStmtListeEmployes.setInt(1,unNuServ);
ResultSet resultat = pStmtListeEmployes.executeQuery();
pStmtListeEmployes.close();
while (resultat.next()) {
System.out.println(" N°"+resultat.getInt("nuempl")+", Nom: "+resultat.getString("nomempl")+", Travail hebdo: "+resultat.getInt("hebdo")+" H, Service: "+resultat.getInt("nuserv"));
}
}
catch(SQLException sqle){
sqle = new SQLException();
throw sqle;
}
}
} |
à l'origine il y'à plus de méthodes que cà mais meme sur ce bout de code la fonction "listeEmployes" ne marche pas.je la teste avec un ptit mai :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| import java.sql.*;
public class Main2 {
public static void main(String[] args) {
try{
Session3 ses = new Session3("i2c03a","i2c03a");
ses.listeEmployes(1);
} catch (SQLException sqle){
System.out.println("erreur");
}
}
} |
Ah, et j'ai aussi essayé avec une Statement simple au lieu de preparedStatement.
D'après mes tests, la fonction passe dans l'exception lors du executeQuery....
J'ai passé desheures à chercher l'erreur j'en peux plus je vois vraiment pas où est le problème.J'ai besoin de votre aide ! Je compte sur vous !
Merci d'avance pour votre soutien !
[JDBC] Erreur de ExecuteUpdate ajout dans une bd oracle
Aie ! Autre problème, toujours la connection qui s'effectue bien, mais là: erreur au niveau du executeUpdate() ben sqlexception...
ca marche nickel sous sqlplus quand je fais
INSERT INTO employe VALUES(11,'boudou',10,2);
par exemple..
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| public void ajoutEmploye(int unNuempl, String unNomempl,int unHebdo, int unAffect)throws SQLException{
//CallableStatement cStmtAjoutEmploye = null;
PreparedStatement pStmtAjoutEmploye = null;
try {
/* Version callableStatement
String sql= "{call usertest.testgestion.AJOUT_EMPLOYE(?,?,?,?)";
cStmtAjoutEmploye = connec.prepareCall(sql);
cStmtAjoutEmploye.setInt(1,unNuempl);
cStmtAjoutEmploye.setString(2,unNomempl);
cStmtAjoutEmploye.setInt(3,unHebdo);
cStmtAjoutEmploye.setInt(4,unAffect);
resultat = cStmtAjoutEmploye.executeUpdate();
*/
/* Version preparedStatement*/
String sql ="INSERT INTO employe VALUES(?,?,?,?)";
pStmtAjoutEmploye = connec.prepareStatement(sql);
pStmtAjoutEmploye.setInt(1,unNuempl);
pStmtAjoutEmploye.setString(2,unNomempl);
pStmtAjoutEmploye.setInt(3,unHebdo);
pStmtAjoutEmploye.setInt(4,unAffect);
pStmtAjoutEmploye.executeUpdate(sql);
}
catch(SQLException sqle){
sqle = new SQLException();
throw sqle;
}
finally {
pStmtAjoutEmploye.close();
//cStmtAjoutEmploye.close();
}
} |
quelqu'un à une idée ? :?: