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
A voir également:
Executenonquery connection property has not been initialized
Connection property has not been initialized - Meilleures réponses
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)
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.
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);