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 :

Insertion dans BD access


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant en propriété intellectuelle
    Inscrit en
    Janvier 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en propriété intellectuelle
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2008
    Messages : 88
    Points : 64
    Points
    64
    Par défaut Insertion dans BD access
    Bonjour tout le monde,

    J'ai un petit soucis avec une insertion dans une de mes base de donnée Access..

    Je recupere une erreur "[Microsoft][ODBC Microsoft Access Driver] Cannot open any more tables" apres avoir mis 679 entrées dans la base de donnée.

    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
     
    Statement statement;
    statement = Database_Handler.connectionReportDB.getConnexion("Report").createStatement();
    String query = "INSERT INTO "+tableName+" values( \'"; 
    for(int j=0; j<columns.length; j++)
    {
    	if(j<columns.length-1)
    	{
    		query = query+columns[j]+"\', \'";
    	}
    	else
    	{
    		query = query+columns[j];
    	}
    }
     
    Quand je met une boucle qui recreer un statement au bout de 679 statements, j'arrive a inserer 15000 entrée mais apres je recupere une erreur générale...
     
    Quelqu'un peut me dire ce qui ne va pas?
    query = query+"\' );";
    statement.executeUpdate(query);
    }

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Points : 149
    Points
    149
    Par défaut
    Je ne connais pas ACCESS, mais je n'ai pas l'impression que c'est un problème d'insertion, mais du nombre de tables qui sont ouvertes en même temps ou du nombre de connexions. Définis ta connexion explicitement.
    Soit tu utilises toujours la même connexion si c'est une application locale, soit tu utilises un pool de connexion et n'oubliant pas de faire un "close connection " à la fin de la servlet si c'est le cas.

    ,

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant en propriété intellectuelle
    Inscrit en
    Janvier 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en propriété intellectuelle
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2008
    Messages : 88
    Points : 64
    Points
    64
    Par défaut
    La BDD est locale, et est bien définie. Je ne sais pas par contre si un statement a un nombre limité d'utilisation ..

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Est-ce que
    1) tu ouvre une nouvelle connexion à chaque boucle? Si oui, appelle-tu bien "close" sur la connexion?
    2) tu effectue bien un close() sur ton statement après l'avoir utilisé?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Points : 149
    Points
    149
    Par défaut
    Je ne te demandais pas si la base de donnée était locale, mais si ton application était locale. Si oui, utilise plutôt ce type de code pour créer (et une seule fois) une connexion lorsque tu démarres ton application. Tu peux définir ta connexion comme static.

    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
     
    java.sql.Connection con    // peut être static ? 
    String     driver   = "....",
                   url     = ".....", 
                   admin = ".....",
                   pw     = " ...";
    //  on charge le driver de base de données" ;
    Class.forName (driver).newInstance();
    // On réalise une connexion à la source de données  
    con = java.sql.DriverManager.getConnection(url,admin,pw );
    if (con==null) 
    {
          System.out.println("Impossible de créer une connexion");
          System.exit(0); 
    }
    Par exemple pour une base en mysql :
    driver = "com.mysql.jdbc.Driver ";
    url = " jdbc:mysql://localhost/mabase?zeroDateTimeBehavior=convertToNull

    Tu peux sans doute adapter ces parametres pour Access.

  6. #6
    Membre du Club
    Homme Profil pro
    Consultant en propriété intellectuelle
    Inscrit en
    Janvier 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en propriété intellectuelle
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2008
    Messages : 88
    Points : 64
    Points
    64
    Par défaut
    Pour repondre au dernier message, la connection est déja établie comme cela en static, et je n'initialise qu'une et une seule fois pour toute l'application.

    Je ferme les base de données a la fin de l'application.

    Mon problème ne viens de pas de la connection a la base de données, car tout fonctionne bien, jusqu'a ce que j'ecrive un nombre important de données dans celle ci.

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    2) tu effectue bien un close() sur ton statement après l'avoir utilisé?

Discussions similaires

  1. erreur insertion dans bd access
    Par vviros dans le forum ASP
    Réponses: 6
    Dernier message: 27/07/2007, 10h04
  2. Réponses: 9
    Dernier message: 11/06/2007, 16h58
  3. Problème insertion dans bdd access. Via VB express 2005
    Par Frosaf dans le forum Windows Forms
    Réponses: 1
    Dernier message: 08/06/2007, 18h19
  4. Problème Insert dans bdd Access
    Par waterman dans le forum Windows Forms
    Réponses: 10
    Dernier message: 10/04/2007, 17h15
  5. lenteur insert dans BD Access
    Par Vodkha dans le forum Bases de données
    Réponses: 11
    Dernier message: 26/04/2006, 07h42

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