JDBC / java.sql.SQLException [Résolu]

Messages postés
10
Date d'inscription
mardi 13 juillet 2004
Dernière intervention
17 janvier 2005
- - Dernière réponse : cs_limalima
Messages postés
125
Date d'inscription
dimanche 31 août 2008
Dernière intervention
16 décembre 2010
- 25 août 2009 à 06:01
Bonjour,

J'aimerais avec une requête SQL à l'intérieur d'une appli java insérer un enregistrement dans une table et savoir si la mise à jour a été faite ou non.

Le problème, c'est que quand on formule une requête autre qu'1 "Select", on lève une exception de type java.sql.SQLException et que si aucune contrainte d'intégrité n'existe l'ajout, la modif ou la suppression s'effectue.

Mais, dans le cas inverse, comment savoir que l'opération demandée ne s'est pas faite puisqu'il s'agit également exception de type java.sql.SQLException ? Comment intercepter l'erreur suivante ou tout autre d'ailleurs ?

java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]Conflit entre l'instruction INSERT et la contrainte...

Merci de toutes vos contributions à ma quête d'éclaircissement.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
9
Date d'inscription
mardi 20 août 2002
Dernière intervention
24 août 2004
2
Merci
Salut,

Pour faire une mise à jour de la table tu utilise la methode executeUpdate de l' interface Statement. Celle ci te reoturne le nombre de ligne mise a jour. Ce qui te permet de savoir si ta ligne est ajouter pour le cas d'un insert, ou combien de lignes ont été mise a jour avec un update.
Si la requete est mal construite la méthode vas lever une execption de type jva.sql.SQLException. Pour connaitre l'erreur tu peut utiliser :

try{
rq.executeUpdate(requete);
catch(java.sql.SQLException sql){
sql.printStackTrace();
}

printStackTrace() te donnera l'erreur exacte de la requete.

Mais si la requete est bien construite (pas d'erreur de grammaire, ni erreur de contrainte) auncune exception ne sera lever.

Userman

Merci userman 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de userman
Messages postés
125
Date d'inscription
dimanche 31 août 2008
Dernière intervention
16 décembre 2010
0
Merci
Salut,
j un code qui permet une mise à jour,

import java.sql.*;
//on cheche un enregistrement et le mettre à jour
//le résulta sera:

//ID_EMP 2| NOMEemp2| DEPT=1
//ID_EMP 5| NOMENouvel employe| DEPT=1
//ID_EMP 7| NOMENouvel employe| DEPT=1
//énumération après mise à jour
//ID_EMP 2| NOMEemp2| DEPT=1
//ID_EMP 5| NOMENouvel employe| DEPT=1
//ID_EMP 7| NOMENom mis à jour| DEPT=4
//BUILD SUCCESSFUL (total time: 0 seconds)


public class SCROLL{


public static void main(String[] args)throws ClassNotFoundException,SQLException{
Class.forName("com.mysql.jdbc.Driver");//le driver
String url ="jdbc:mysql://localhost/test";
Connection cnx =DriverManager.getConnection(url, "root","root");//utlisateur:root,password:root
Statement st = cnx.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

ResultSet rs st.executeQuery("SELECT * FROM emp where dept 1");



while(rs.next()){ //je recupere tout le tableau
System.out.println("ID_EMP " + rs.getInt(1)+ " | NOME" + rs.getString(2)+" | DEPT=" +
rs.getInt(3));//colone 1,colone 2 qui est un string, colone 3

}
rs.absolute(3);//se positionner a la ligne 3
rs.updateString("NOME", "Nom mis à jour");//changer le nom de la ligne 3
rs.updateInt("DEPT",4);//changer le n de département
rs.updateRow();//mettre à jour la ligne
rs.beforeFirst();//revenir au début
System.out.println("énumération après mise à jour");


while(rs.next())

{
System.out.println("ID_EMP " +rs.getInt(1)+"| NOME" +rs.getString(2)+"| DEPT="+
rs.getInt(3));
}
rs.close();
cnx.close();
}//fin main
Commenter la réponse de cs_limalima

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.