PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 11/01/2011 13:17:40

GloReX
Membre

Bug dans l'insertion de donnée

Bonjour,

Je suis entrain de m'arracher les cheveux sur le code suivant.
Je n'arrive pas à insérer mes données dans la db en faisant mon commit.
Petit détail ce code se trouve dans un Thread à usage unique (quel gaspillage)

Le serveur Pg9 fonctionne sur un Windows 2008R2 x64 et l'application sur un serveur 2008SP1 X86. La version de NpgSql 2.0.11.
Le FrameWorks 3.5 Sp1 est installé sur les deux serveurs

L'objet de connexion est instancié dans le constructeur

_oConn = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["dbpg"].ConnectionString);

la variable id est récupérée à l'aide d'un sélect qui lui fonctionne sans problèmes.

//Début de la transaction avec la bdd
trans = _oConn.BeginTransaction();

//Ajout des données dans la bdd
querry = "INSERT INTO table1(id_line, datereleve, temperature, ensoleillement,wattcumul, watts, ksh) VALUES(@id, @dt, @t, @l, @c, @p, 0)";
foreach (RowData row in lignes)
{
   NpgsqlCommand InsertQuerry = new NpgsqlCommand(querry, _oConn, trans);
   InsertQuerry.Parameters.Add(new NpgsqlParameter("id", idClient));
   InsertQuerry.Parameters.Add(new NpgsqlParameter("dt", row.Date));
   InsertQuerry.Parameters.Add(new NpgsqlParameter("t", row.Tmp));
   InsertQuerry.Parameters.Add(new NpgsqlParameter("l", row.Lum));
   InsertQuerry.Parameters.Add(new NpgsqlParameter("c", row.Cum));
   InsertQuerry.Parameters.Add(new NpgsqlParameter("p", row.Prod));
   int ret = InsertQuerry.ExecuteNonQuery();
   if (ret != 1)
   {
      trans.Rollback();
      throw new Exception("Erreur Sql, Donnée non insérée dans la bdd. Rollback done!!");
   }
}

//Validation de l'ajout des lignes dès l'ensemble à été inséré
trans.Commit();

il n'y a pas d'exception lancée.

Je vous remercie pour votre soutient

Dernière modification par GloReX (11/01/2011 15:17:22)

Hors ligne

#2 11/01/2011 13:57:23

gleu
Administrateur

Re : Bug dans l'insertion de donnée

Avez-vous une erreur au niveau des traces SQL ?


Guillaume.

Hors ligne

#3 11/01/2011 15:06:54

GloReX
Membre

Re : Bug dans l'insertion de donnée

J'ai remis une ligne de code qui semble ne pas générer d'erreur:

querry = "INSERT INTO table1(id_line, datereleve, temperature, ensoleillement,wattcumul, watts, ksh) VALUES(@id, @dt, @t, @l, @c, @p, 0)";

Ma trace dans le fichier de log me donne le résultat suivant:

...
14:01:36 -     THQL (45): Traitement des données brutes (10100007): Début du traitement des données
14:01:36 -     THQL (45): Traitement des données brutes (10100007): Injection des données!
14:01:36 -     THQL (45): Traitement des données brutes (10100007): Injection des données terminée.
14:01:36 -     THQL (45): Traitement des données brutes (10100007): Procédure complète en (70Ms)!!
...

Le procédure complète est tracé après le commit, ce qui me laisse pensé que les données doivent être correctement insérée.

Hors ligne

#4 19/01/2011 11:21:27

GloReX
Membre

Re : Bug dans l'insertion de donnée

Bonjour,

J'ai résolu le problème. Le bug était entre la chaise et le clavier, mauvaise chaîne de connexion.

Hors ligne

Pied de page des forums