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

jojo6666 10 Messages postés mardi 13 juillet 2004Date d'inscription 17 janvier 2005 Dernière intervention - 19 août 2004 à 14:14 - Dernière réponse : cs_limalima 125 Messages postés dimanche 31 août 2008Date d'inscription 16 décembre 2010 Dernière intervention
- 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 

2 réponses

Répondre au sujet
userman 9 Messages postés mardi 20 août 2002Date d'inscription 24 août 2004 Dernière intervention - 19 août 2004 à 14:55
+2
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de userman
cs_limalima 125 Messages postés dimanche 31 août 2008Date d'inscription 16 décembre 2010 Dernière intervention - 25 août 2009 à 06:01
0
Utile
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.