ExecuteNonQuery: Connection property has not been initialized. [Résolu]

Signaler
Messages postés
129
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
4 mars 2010
-
Messages postés
7
Date d'inscription
mardi 17 février 2009
Statut
Membre
Dernière intervention
18 octobre 2011
-
Bonjours,
Je travail normalement en ADO (où je suis a coté de la plaque) et je voudrais faire une insertion dans la DB par ce code :
<hr size="2" width="100%" />            Conex.Open()
            DataAdapter = New OleDbDataAdapter("Select * FROM Traducs", Conex)

            DataAdapter.InsertCommand = New OleDbCommand("INSERT INTO Traducs (Lg, Txt) VALUES (" + Integer.Parse(Langue.English).ToString() + ", 'r')")
            DataAdapter.InsertCommand.Parameters.Add("Txt", OleDb.OleDbType.Char, 255, "Txt")

            DataAdapter.InsertCommand.Parameters.Item("Txt").Value = Text
            DataAdapter.InsertCommand.ExecuteNonQuery()
            Conex.Close()
            'Update the local variable for the next time
            Conteneur.Add(Text, Text)
<hr size="2" width="100%" />Malheureusement, la Ligne ExecuteNonQuery() me renvois l'erreur suivante : ExecuteNonQuery: Connection property has not been initialized.

Je ne comprend pas pourquoi et ça fait 1 heure que je suis dessus. Pouvez-vous m'aider ?

Merci d'avance,
Jean-Pierre Sneyers

8 réponses

Messages postés
329
Date d'inscription
jeudi 20 novembre 2003
Statut
Membre
Dernière intervention
10 mai 2014
4
Salut,

Dans cette ligne, tu déclare bien DataAdapter avec sa connexion
     DataAdapter = New OleDbDataAdapter("Select * FROM Traducs", Conex)

mais pas dans celle là, c'es le OledbCommand qui doit recevoir uen connexion ouverte à la BDD
            DataAdapter.InsertCommand = New OleDbCommand("INSERT INTO Traducs (Lg, Txt) VALUES (" + Integer.Parse(Langue.English).ToString() + ", 'r')",Conex)

@+
LIM
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
61
Ah ouais ? dingue...

le dataAdapter a deja une connexion déclarée, faut en donner une aussi a son InsertCommand...

pas simple, pas simple
Messages postés
129
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
4 mars 2010

Merci beaucoup, c'est nikel lim
Messages postés
329
Date d'inscription
jeudi 20 novembre 2003
Statut
Membre
Dernière intervention
10 mai 2014
4
RE

         Content que çà marche, voilà comment je m'y prends quand je développe un programme qui à besoin d'être relié à une BDD

   Je déclare dans un module 
      'Connexion au serveur
     Pulbic SQLCX as new SQLCONNEXION
     'Objet dataadpater
    Pulbic SQLDA as new SQLDATAADPATER
   'Objet command
    Pulbic SQLCOM as new SQLCOMMAND

dans l'initialisation de mon programme

      'Creation de la connexion au serveur
      SQLCX.CONNEXIONSTRING="ma connexion à la BDD"
      'Ouverture de la connexion
      SQLCX.OPEN
      'Mon objet commande reçoit la connexion ouverte à mon serveur de BDD
      SQLCOM.CONNEXION=SQLCX

      'Quand je utiliser une reqûete je fait
   
         SQLCOM.COMMANDTEXT="INSERT INTO..... (je tape ma requête SQL)"
         'Je donne au DataAdapter la requête et la connexion en même temps
         SQLDA.INSERTCOMMAND=SQLCOM
         'J'éxecute ma requête
         SQLDA.INSERTCOMMAND.EXECUTENONQUERY

   comme çà au final je n'ai qu'a me préocuper de ma requête SQL.
   ta méthode est aussi bonne, mais je préfère la mienne car elle me paraît plus lisible au final.

   bon code

@+
LIM
Messages postés
129
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
4 mars 2010

Vi mais je dois parfois travaillé hors ligne sur mes DB, ta méthode ne semble pas le permetre si ??

Sinon merci pour ce complément
Messages postés
7
Date d'inscription
mardi 17 février 2009
Statut
Membre
Dernière intervention
18 octobre 2011

Je travail en ADO et je voudrais faire une insertion dans la DB par ce code :
public bool save()
{
int resultat = 0;
try
{
string query = "INSERT INTO utilisateur (User_Name, Password) " + " VALUES(@user, @pass);";
OleDbCommand comm = new OleDbCommand(query, dbconnection);
comm.Parameters.AddWithValue("@user", User);
comm.Parameters.AddWithValue("@pass", Pass);
comm.ExecuteNonQuery();
}
catch (OleDbException e)
{
MessageBox.Show(e.Message);
}
return (resultat == 1);
Messages postés
129
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
4 mars 2010

Salut,
Déterrage de poste de il a 3an + une question qui ne décrit en rien ton problème + sans un bonjour/merci = aucune chance d'avoir une réponse.

Crée toi donc un nouveau sujet de discutions sur le forum, décrit CLAIREMENT et de façon détaillé ton problème et n'oublie pas la politesse de base.
Messages postés
7
Date d'inscription
mardi 17 février 2009
Statut
Membre
Dernière intervention
18 octobre 2011

merci je tient en compte votre conseil