Bonjour amis developezistes,

je développe une appli C# chargée de se connecter à une base MySql sur un serveur distant.

Je rencontre le message d'erreur suivant lorsque j'essaie d'insérer des données dans les tables de la base :

MySql.Data.MySqlClient.MySqlException: There is already an open DataReader associated with this Connection which must be
closed first.
à MySql.Data.MySqlClient.MySqlCommand.CheckState()
à MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
à MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
à ExportHeurèsToMySql.ConnexionVersMySql.ordreSql(String ordSql) dans C:\~chemin très long~\ConnexionVersMySql.cs:ligne 83

Voici le code coupable :



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
public void ordreSql(string ordSql)
		{
			MySqlDataAdapter MyAdapter = new MySqlDataAdapter();
 
			MyAdapter.SelectCommand = new MySqlCommand(ordSql, this.connection);
 
			try
			{
				MyAdapter.SelectCommand.ExecuteNonQuery();
			}
			catch (Exception e)
			{
				Console.WriteLine("Erreur sur l'ordre SQL suivant : " + ordSql);
				Console.WriteLine(e.ToString());
			}
		}
Toutefois ce code a fonctionné parfaitement pour créer les tables dans la base.

J'admets avoir copié-collé-modifié ce code sans vraiment comprendre le principe derrière

J'ai essayé quelques bidouilles comme "MyAdapter.Dispose()" etc mais sans résultat.

Vos suggestions sont les bienvenues !