IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

problème d'insertion dans une base de données


Sujet :

JDBC Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2003
    Messages : 9
    Points : 9
    Points
    9
    Par défaut problème d'insertion dans une base de données
    Bonjour,
    j'ai créé une BD access (avec access 2002) nommée test.mdb contenant une seule table "MATABLE" avec 3 champs: NOM, PRENOM et SURNOM.
    lorsque je consulte son contenu à partir de mon programme java (SELECT * FROM MATABLE) ça fonctionne parfaitement. mais quand j'essaie d'insérer ou de supprimer des enregistrements, ça ne fonctionne pas.

    voici le code que j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    import java.sql.*;
     
    public class Ajout{
     
    	public static void main(String[] arguments){
    		String data = "jdbc:odbc:MATABLE"; 
     
    		try{
    			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    					Connection conn = DriverManager.getConnection(data);
    			Statement st = conn.createStatement();
     
     
    			// ajout d'un enregistrement
     
    			String query = "insert into MATABLE values ('MOI','TOI','LUI')";
    							int result = st.executeUpdate(query);
    			System.out.println("MAJ effectuée"+result);
    			st.close();
     
    	}catch(SQLException se){
    	 		System.out.println("SQL Error: "+se.toString()+ " "
    	 							+se.getErrorCode()+" "+se.getSQLState());
    	 }catch(Exception e){
    	  		System.out.println("Error: "+e.toString()
    	  							+e.getMessage());
    	  }
    	}
    }
    la variable result renvoie la valeur 1 mais la BD n'est pas modifiée !!

    le fichier access est associé (via l'administrateur de source de données ODBC) à un driver "Microsoft Access Driver (*.mdb)".

    est-ce qu'il y a une manipulation spéciale à faire sur le fichier access pour que les mises à jour soient prises en compte ?

    est-ce que quelqu'un peut m'aider SVP ? merci

    Tidjani.

  2. #2
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Je ne connais pas Access, mais en génral, pour valider les modifs dans une base, il faut faire un "COMMIT".

  3. #3
    hdd
    hdd est déconnecté
    Membre régulier Avatar de hdd
    Profil pro
    Inscrit en
    Février 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2004
    Messages : 105
    Points : 74
    Points
    74
    Par défaut
    Le commit ne doit pas être obligatoire.

    Par contre, la connexion avec la base n'est pas fermée (il ne devrait pas y avoir de rapport, mais bon).

  4. #4
    Membre actif Avatar de vincent63
    Inscrit en
    Octobre 2005
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 198
    Points : 205
    Points
    205
    Par défaut
    'jour,
    Je suis pour le commit... et pour la fermeture de connexion aussi
    Essaies d'ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    			conn.commit();
    			conn.close();
    "Ils ne savaient pas que c'était impossible... alors ils l'ont fait." Mark Twain

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par hdd
    Le commit ne doit pas être obligatoire.
    Exact, le commit() n'est pas obligatoire puisque par défaut il est automatique :
    Citation Envoyé par [b
    Connection.html.setAutoCommit(boolean)[/b]]By default, new connections are in auto-commit mode.

    Citation Envoyé par hdd
    Par contre, la connexion avec la base n'est pas fermée (il ne devrait pas y avoir de rapport, mais bon).
    Mais dans tous les cas il est préférable de bien fermer tout ce qui doit l'être, et le mieux serait de le faire dans un bloc finally...

    a++

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2003
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Bonjour à tous,

    merci à tous et en particulier à vincent63 c'est réglé.
    J'ai enfin réussi à insérer (insert into) et mettre à jour (update) les données de ma base. cependant, je n'ai pas pu en supprimer !

    voici la partie du code que j'utilise pour la suppression:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    import java.sql.*;
     
    public class Suppression{
     
    	public static void main(String[] arguments){
    		String data = "jdbc:odbc:MATABLE"; 
    	try{
    		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    		Connection conn = DriverManager.getConnection(data);
    		Statement st = conn.createStatement();
     
    		String delete = "delete from MATABLE where SURNOM = ‘Bill"; // la requête en question !!
     
    		int result = st.executeUpdate(delete);
    		System.out.println("MAJ effectuée"+result);
    		st.close();
    		conn.commit();
    		conn.close();
     
    	}catch(SQLException se){
    	 		System.out.println("SQL Error: "+se.toString()+ " "
    	 							+se.getErrorCode()+" "+se.getSQLState());
    	 }catch(Exception e){
    	  		System.out.println("Error: "+e.toString()
    	  							+e.getMessage());
    	  }
    	}
    }
    mais Java me réplique avec un message disant que ma requête contient trop peu de paramètres ! Pourtant, ceci est une instruction sql correcte.

    que dois-je faire ?

    Tidjani.

  7. #7
    Membre averti Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Points : 409
    Points
    409
    Par défaut
    Bonjour,
    Ta requete:
    String delete = "delete from MATABLE where SURNOM = ‘Bill";
    Essai ca:
    String delete = "DELETE * FROM MATABLE WHERE SURNOM LIKE ‘Bill' ";
    J'ai mis * mais je suppose que c'est DELETE NOM
    J'ai mis LIKE mais avec"=" ca doit marcher aussi.
    Pourquoi ca marche jamais?Vive le café!

  8. #8
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 103
    Points : 128
    Points
    128
    Par défaut
    belmansour tidjani:
    dans ton code , il n'y pas le ' après Bill. juste un avant et le guillement après. Il doit pas aimer le driver jdbc ou la base.



    LIKE n'est necessaire que pour une recherche avec une multitude réponse.
    meme si ca peut retoruné qu'une ligne, en générale, c'est pour obtenir plus d'une réponse.

    cordialement,
    Moroeno

Discussions similaires

  1. [MySQL] Problème pour l'insertion dans une base de données avec variables $_POST
    Par hakkio dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/03/2012, 17h04
  2. Problème d'insertion dans une base de données
    Par Boom Boom dans le forum JDBC
    Réponses: 4
    Dernier message: 14/03/2012, 21h54
  3. Réponses: 5
    Dernier message: 10/06/2010, 16h45
  4. Problème d'insertion dans une base de donnèes
    Par atout dans le forum Administration
    Réponses: 14
    Dernier message: 27/12/2006, 07h07
  5. problème de recherche dans une base de données
    Par bouzid_mehdi dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2005, 06h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo