La requete sans faute qui ne fonctionne pas ....

cs_Melom Messages postés 1 Date d'inscription mercredi 3 août 2011 Statut Membre Dernière intervention 23 août 2011 - 23 août 2011 à 17:09
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 - 6 sept. 2011 à 12:09
Bonjour a tous,

Voila mon problème est simple (mais la solution un peu moins) il s'agit en fait d'une requête paramétrée qui (d'après moi) ne contient pas d'erreur, qui s’exécute correctement avec les bonnes valeurs dans les paramètres, mais qui n'appliquent aucun changement dans la base de données. Bien entendu, pour simplifier la tache, aucun message d'erreur, autant a la compilation qu'a l’exécution.

Pour info, cette fonction fait partie d'une fonction de synchronisation entre deux base de données (SQLite et MySQL) et ceci est la fonction pour le transfert d'une table de SQLite sur Mysql :


private void upload(String mysqlConnectString, MySqlConnection mysqlCon, MySqlCommand mysqlCmd, MySqlTransaction mysqlTrans, String sqliteConnectString, SQLiteConnection sqliteCon, SQLiteDataReader sqliteRdr, SQLiteCommand sqliteCmd) {

SQLiteDataReader sqliteRdr2=null;
SQLiteCommand sqliteCmd2, sqliteCmd3;
SQLiteTransaction sqliteTrans;
string querySqlite, querySqlite2, querySqlite3, queryMysql;

SQLiteParameter paramSqlitePackingListCode=new SQLiteParameter();
paramSqlitePackingListCode.ParameterName="@paramSqlitePackingListCode";
paramSqlitePackingListCode.DbType=DbType.String;

MySqlParameter paramMysqlPackingListCode=new MySqlParameter();
paramMysqlPackingListCode.ParameterName="@paramMysqlPackingListCode";
paramMysqlPackingListCode.DbType=DbType.String;

MySqlParameter paramCal=new MySqlParameter();
paramCal.ParameterName="@paramCal";
paramCal.DbType=DbType.String;

MySqlParameter paramSlID=new MySqlParameter();
paramSlID.ParameterName="@paramSlID";
paramSlID.DbType=DbType.Int32;

MySqlParameter paramDetailStorelocation=new MySqlParameter();
paramDetailStorelocation.ParameterName="@paramDetailStorelocation";
paramDetailStorelocation.DbType=DbType.String;

MySqlParameter paramPlStatus=new MySqlParameter();
paramPlStatus.ParameterName="@paramPlStatus";
paramPlStatus.DbType=DbType.String;

MySqlParameter paramPreConf=new MySqlParameter();
paramPreConf.ParameterName="@paramPreConf";
paramPreConf.DbType=DbType.Boolean;

//Open the connection to the MySQL database
mysqlCon=new MySqlConnection(mysqlConnectString);
mysqlCon.Open();

//open the connection the SQLite database
sqliteCon=new SQLiteConnection(sqliteConnectString);
sqliteCon.Open();

querySqlite="Select * FROM package_scan";
sqliteCmd=new SQLiteCommand(querySqlite, sqliteCon);
sqliteRdr=sqliteCmd.ExecuteReader();
mysqlTrans=mysqlCon.BeginTransaction();
sqliteTrans=sqliteCon.BeginTransaction();

try {
while(sqliteRdr.Read()) {
if(Convert.ToBoolean(sqliteRdr["sync"])==false) {
paramSqlitePackingListCode.Value=sqliteRdr["packinglistcode"];

querySqlite2=string.Format("SELECT * FROM pldetail WHERE packinglistcode = @paramSqlitePackingListCode",
paramSqlitePackingListCode.ParameterName);

sqliteCmd2=new SQLiteCommand(querySqlite2, sqliteCon);
sqliteCmd2.Parameters.Add(paramSqlitePackingListCode);
sqliteRdr2=sqliteCmd2.ExecuteReader();

paramCal.Value=sqliteRdr2["ATAsite"];
paramPlStatus.Value=sqliteRdr2["plstatus"];
paramSlID.Value=sqliteRdr2["sl_id"];
paramPreConf.Value=sqliteRdr2["pre_confirm"];
paramMysqlPackingListCode.Value=paramSqlitePackingListCode.Value;

queryMysql=string.Format("UPDATE pldetail SET ATAsite=@paramCal, sl_id=@paramSlID, plstatus=@paramPlStatus, pre_confirm=@paramPreConf WHERE packinglistcode = @paramMysqlPackingListCode;",
paramCal.ParameterName, paramSlID.ParameterName, paramPlStatus.ParameterName, paramPreConf.ParameterName, paramMysqlPackingListCode.ParameterName);

mysqlCmd=new MySqlCommand(queryMysql, mysqlCon);
mysqlCmd.Parameters.Add(paramCal);
mysqlCmd.Parameters.Add(paramPlStatus);
mysqlCmd.Parameters.Add(paramSlID);
mysqlCmd.Parameters.Add(paramPreConf);
mysqlCmd.Parameters.Add(paramMysqlPackingListCode);

mysqlCmd.ExecuteNonQuery(); // Le problème ce pose a l'execution de cette requete ...
}
}

sqliteTrans.Commit();
mysqlTrans.Commit();
} catch(Exception ex) {
MessageBox.Show(ex.Message);
if(mysqlTrans!=null) {
mysqlTrans.Rollback();
}
if(sqliteTrans!=null) {
sqliteTrans.Rollback();
}
sqliteRdr.Close();
sqliteRdr2.Close();
mysqlCon.Close();
sqliteCon.Close();
}
sqliteRdr.Close();
mysqlCon.Close();
sqliteCon.Close();
}



Est-ce que l'un d'entre vous aurait il une idée d'ou cela peut venir ?

1 réponse

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
6 sept. 2011 à 12:09
Hello,

On ne doit pas mettre de ; à la fin de la requête.


Sébastien FERRAND
Ingénieur Concepteur Senior
Microsoft Visual C# MVP 2004 - 2009
Blog Photo
0
Rejoignez-nous