oaca
Messages postés9Date d'inscriptionmardi 28 avril 2009StatutMembreDernière intervention17 juin 2009
-
12 juin 2009 à 18:28
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 2017
-
17 juin 2009 à 21:38
bonjour à tous,
je travaille avec c# et sql server express 2005.
j'ai un probléme avec insert into ,update et delete,je trouve tjrs mon table inchangé, voiçi mon code pour insérer une nouvelle ligne dans mon table profil:
string connectionString = null;
string requête = null;
connectionString = ConfigurationManager.ConnectionStrings["gestion_de_maintenance.Properties.Settings.Database_DENAConnectionString"].ConnectionString;
SqlConnection connexion = new SqlConnection(connectionString);
// ouverture connexion
connexion.Open();
requête = "INSERT INTO prfil(id,nom,prenom) VALUES(104,'zizou','aze')";
// exécute sqlCommand avec requête de mise à jour
SqlCommand sqlCommand = new SqlCommand(requête, connexion);
int nbLignes = sqlCommand.ExecuteNonQuery();
// affichage résultat
Console.WriteLine("Il y a eu {0} ligne(s) modifiée(s)", nbLignes);
connexion.Close();
merçi pour votre aide
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 14 juin 2009 à 09:30
Bonjour
je ne vois pas de probleme dans ton code, mais tu devrais tout de même ajouter un Try-Catch, c'est plus prudent dans la gestion des base de données.
As-tu un message d'erreur, une Exception ?
Obtiens-tu le message "Il y a eu 0 ligne(s) modifiée(s)" ?
es-tu certain d'être connecté à la bonne base de données ? (affiche la chaine de connexion)
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 14 juin 2009 à 16:03
Excuse moi, mais je ne peux le croire.
Si une opération d'insertion simple donne 1 en retour c'est qu'une ligne à été ajoutée, il n'y a pas d'autre possibilité.
donc soit tu ne regarde pas dans la bonne base, soit il y a une opération de suppression par la suite, soit tu es en mode transaction et il y a un rollback qui se produit.
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 15 juin 2009 à 11:38
Je doute très fortement qu'il s'agisse d'un rollback, puisqu'il n'y a pas de transaction dans ton code.
Soit tu ne regardes pas la bonne base, soit (et ça m'étonnerait vraiment beaucoup), tu as un trigger AFTER INSERT sur ta table qui supprime aussitôt le champ que tu as ajouté.
Pour résumer, vérifie que la base que tu modifie et celle où tu vérifie sont bien les mêmes bases.
Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 15 juin 2009 à 18:48
Salut
Si tu travailles sur une base de données en mode fichier et que ce fichier est dans le répertoire debug/bin
alors cette base de données est récrasée a chaque lancement.
C'est le cas pour les bases access donc surement idem pour sqlserveur en mode fichier
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 17 juin 2009 à 15:12
Excusez une question stupide, mais pourquoi faut il attacher un fichier avec Sql Express ?
ne fonctionne t'il pas comme un SQL normal avec une base en ligne, gerée par un moteur ?
Autre Question @oaca, il y a 2 chaines de connexion dans le fichier de config, laquelle utilise-tu ?
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 17 juin 2009 à 21:38
ok, donc si je comprends tout,
si le fichier de données est déjà attaché, c-à-d que le moteur SQL fourni les données en ligne, les requettes devraient être excutées correctement, et les données mises à jour.
et s'il ne l'était pas, le moteur va le "monter" et le garder connecté, donc idem pour l'execution des requettes, la seule difference devrait être le performance.
En plus, vu que la chaine de connexion indique bien le répertoire de donnée par défaut (=|DataDirectory|) le risque d'écrasement est pratiquement nul.
Ce qui nous ramène au probleme de départ, s'il n'y a pas d'exception et si le retour de l'execution de la commande insert donne un résultat different de 0, c'est que les données ont été inserées quelque part.
@oaca,
Peux-tu chainer une commande select avant et juste après la commande insert, et afficher à chaque fois les lignes retournées ?