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

Signaler
Messages postés
1
Date d'inscription
mercredi 3 août 2011
Statut
Membre
Dernière intervention
23 août 2011
-
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
-
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

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
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