cs_Sobieski
Messages postés54Date d'inscriptionmardi 22 mars 2005StatutMembreDernière intervention13 mars 2007
-
31 oct. 2006 à 22:55
cs_Sobieski
Messages postés54Date d'inscriptionmardi 22 mars 2005StatutMembreDernière intervention13 mars 2007
-
1 nov. 2006 à 00:00
Salut !
J'ai un petit soucis : je n'arrive pas a faire d'update/insert/delete sur ma database. A priori, la chaine de caractère que j'utilise fonctionne (elle passe le QueryBrowser).
D'un point de vu architectural, j'ai un objet DBConnect qui est invoqué et la connexion ouverte pour chaque HttpContext (ceci est non discutable, vu que je peux aisément faire des selects à tout va avec).
Voici mon objet DBConnect :
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 31 oct. 2006 à 23:14
Salut,
Là, la seule différence que je vois est l'ouverture de la connexion.
Un DataAdapter ouvre la connexion si elle ne l'est pas déjà, ils ont dû suivre le même comportement pour le provider MySQL.
cs_Sobieski
Messages postés54Date d'inscriptionmardi 22 mars 2005StatutMembreDernière intervention13 mars 2007 31 oct. 2006 à 23:29
Je suis d'accord, mais quand je regarde en debug l'état de la connexion, il me dit bien "Open".
En debug pas à pas, je fais bien tout, les états semblent normaux, et le pire, c'est quand je regarde le nombre de row affected, il me sort bien "1".
J'ai modifié mon code pour ressembler à celui présent dans ce code source :
http://www.csharpfr.com/codes/DIVERS-CLASSES-POUR-UTILISER-MYSQL-ACCESS-SQL-SERVER_36034.aspx
Ma méthode d'update devient donc :
public
bool Update(
string cmd){
try{
MySqlDataAdapter myAdapter =
new
MySqlDataAdapter();myAdapter.SelectCommand =
new
MySqlCommand(cmd,
this._dbconn);myAdapter.SelectCommand.ExecuteNonQuery();
return
true;}
catch (
Exception e){
throw e;}
}
En debug pas à pas, je fais bien tout, les états semblent normaux, et le pire, c'est quand je regarde le nombre de row affected, il me sort bien "1".
Ma table Config ne contient qu'une ligne (c'est pour stocker la conf). Elle n'a pas de Key, et l'Update se fait sans clause WHERE. N'y aurait-il pas une protection inconnue de moi ?
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 31 oct. 2006 à 23:44
Bonne question.
Si c'est le cas, il faut peut être chercher du côté de MySQL.
Peut être un problème de droit, mais si tu as tester ta requête avec le même compte via leur analyseur de requête que celui de ta chaine de connexion, il n'y a pas de raison que ça ne passe pas dans le code.
Et si c'était le cas le provider devrait au moins te remonter une exception, au lieu d'échouer silencieusement et de retourner un nombre éronné.
Dernière solution me venant à l'esprit : un transaction implicite avec rollback implicite à la déconexion.