begin process at 2012 02 10 15:34:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Base de données

 > 

MySQL

 > 

Probleme d'update/insert/delete


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme d'update/insert/delete

mardi 31 octobre 2006 à 22:55:01 | Probleme d'update/insert/delete

Sobieski

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 :

publicclassDbConnect

{

private MySqlConnection _dbconn;

public DbConnect()

{

}

public void Dispose()

{

this ._dbconn.Dispose();

}

public bool Initialize()

{

bool ret = false ;

try

{

_dbconn =

new MySqlConnection ();

_dbconn.ConnectionString =

"server=localhost;user id=root; password=nuwuugaemysql;database=wwwgareaugroumpfnet;" ;

/*ConfigurationManager.ConnectionStrings["connectionstring"].ToString(); ;*/

ret =

true ;

}

catch

{

//TODO: Log

if (_dbconn.ConnectionString == "" )

ret =

false ;

}

return ret;

}

public bool Open()

{

bool ret = false ;

try

{

_dbconn.Open();

ret =

true ;

}

catch

{

//TODO: Log

ret =

false ;

}

return ret;

}

public DataTable ReadTable( string cmd)

{

MySqlDataAdapter myAdapter = new MySqlDataAdapter ();

myAdapter.SelectCommand =

new MySqlCommand (cmd, _dbconn);

DataSet myDs = new DataSet ();

myAdapter.Fill(myDs);

return myDs.Tables[0];

}

public bool Update( string cmd)

{

MySqlCommand myCommand = new MySqlCommand (cmd);

myCommand.Connection =

this ._dbconn;

myCommand.ExecuteNonQuery();

return true ;

}

public bool Insert( string cmd)

{

MySqlCommand myCommand = new MySqlCommand (cmd);

myCommand.Connection =

this ._dbconn;

myCommand.ExecuteNonQuery();

return true ;

}

public bool Delete( string cmd)

{

MySqlCommand myCommand = new MySqlCommand (cmd);

myCommand.Connection =

this ._dbconn;

myCommand.ExecuteNonQuery();

return true ;

}

}

Bref, quand je passe une commande a Select, ça passe, les autres, ça fait rien. Pourquoi ? (a noter que je n'ai ni exception, ni rien).

mardi 31 octobre 2006 à 23:14:29 | Re : Probleme d'update/insert/delete

coq

Administrateur CodeS-SourceS
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.



/*
coq
MVP Visual C#
CoqBlog
*/
mardi 31 octobre 2006 à 23:29:20 | Re : Probleme d'update/insert/delete

Sobieski

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 :

publicbool Update(string cmd)

{

try

{

MySqlDataAdapter myAdapter = newMySqlDataAdapter();

myAdapter.SelectCommand =

newMySqlCommand(cmd, this._dbconn);

myAdapter.SelectCommand.ExecuteNonQuery();

returntrue;

}

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 ?
mardi 31 octobre 2006 à 23:44:29 | Re : Probleme d'update/insert/delete

coq

Administrateur CodeS-SourceS
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.


/*
coq
MVP Visual C#
CoqBlog
*/
mercredi 1 novembre 2006 à 00:00:47 | Re : Probleme d'update/insert/delete

Sobieski

Je pense plutôt tenter par la méthode dite de la procédure stockée, même si c'est une technique que je suis loin de maîtriser.



Cette discussion est classée dans : public, cmd, ret, mycommand, dbconn


Répondre à ce message

Sujets en rapport avec ce message

progresseBar en C# [ par dyder ] Bonjour à tous, j'ai besion d'aide..j'ai réalisé un programmae qui permet de lire des fichiers et de mettre à jour certaines tables de ma base de donn insertion de données avec sqldataadaptar [ par vboussema ] salut;j'ai un dataadapter et un dataset et j'aime insérer dans la bd en utilisant une procedure stokéquand j'essay d'insérer en utilisant la commande Appel de requete ACCESS [ par Lovejambon ] Bonjour!!J'ai un petit soucis avec ACCESS.Je souhaite exécuter une requête qui est enregistrée dans ma base ACCESS mais je n'arrive pas à le faire ave Créer et lancer une requête SQL en C# [ par CleemS ] Salut à tous :)Alors voilà mon problème, je crois que j'ai à peu près réussi à lier ma BDD (SQL Server) à mon programme (Visual C# 2008 Express) avec Convertion type classe (plugin) vers interface [ par sourismerdique ] Bonjour, je m'adresse à vous car j'ai un probleme de conversion de type, j'ai tenté de m'aider avec tout les bouts de code similaires trouvés sur la t cast implicit [ par 6RatsMorts ] Bonjour, D'un côté j'ai une classe AddressMailCollection : ListDe l'autre j'ai une variable de type 'MatchCollection' résultant de la procédure Rege utilisation des variables d'une classe [ par ggrug26 ] bonjour a tous,je débute dans le monde du C#, et je rencontre quelques difficultés, mes bases de C++ doivent être rouiller:j'ai créer une classe avec Insertion simple en SQL Server impossible [ par Cygace ] Bonjour, voila je suis entrain de m'arracher les cheveux sur une insertion ultra simple sur sql serveur 2005 mais qui refuse d'aller. Je vous mets le classe dérivée de ElapsedEventArgs [ par jnc ] Bonjour,je cherche créer une classe dériverant de ElapsedEventArgs(pour pouvoir passer des parametres à une fonction timer)public class MonElapsedEve du C/C++ au C# [ par louvinon ] Bonjour,on me fournit une DLL faites en C++/C.En C++, j'ai ceci : typedef struct{ UCHAR cnv_name [8]; ULONG lgd_utcc; ULONG lgd_phys; ULONG lgd_m


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,513 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales