Pb de sql server express 2005

oaca Messages postés 9 Date d'inscription mardi 28 avril 2009 Statut Membre Dernière intervention 17 juin 2009 - 12 juin 2009 à 18:28
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 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

16 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
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)

C# is amazing, enjoy it!
0
oaca Messages postés 9 Date d'inscription mardi 28 avril 2009 Statut Membre Dernière intervention 17 juin 2009
14 juin 2009 à 10:21
mon probléme n'est pas dans les exceptions et j'obtiens le message qui retourne :Il y a eu {1} ligne(s) modifiée(s) mais mon table reste inchanger.
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
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.

C# is amazing, enjoy it!
0
oaca Messages postés 9 Date d'inscription mardi 28 avril 2009 Statut Membre Dernière intervention 17 juin 2009
14 juin 2009 à 22:59
est ce gu'ilya la possibilité de désactiver rollback? si oui,comment? si non ,que dois_je faire?
merçi pour votre réponse Robert33!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
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 ! -
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
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

Bon dev
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
15 juin 2009 à 19:41
"récrasée a chaque lancement." uniquement si le fichier source est plus récent que celui de ton dossier de déploiement, dans mes souvenirs

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
0
oaca Messages postés 9 Date d'inscription mardi 28 avril 2009 Statut Membre Dernière intervention 17 juin 2009
15 juin 2009 à 22:34
je travaille avec crystal report et non avec fichier!
mon code est simple et je ne travaille pas avec trigger.
c'est quoi la solution?
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
16 juin 2009 à 09:54
A tout hasard, c'est quoi ta chaine de connexion ?

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
0
oaca Messages postés 9 Date d'inscription mardi 28 avril 2009 Statut Membre Dernière intervention 17 juin 2009
16 juin 2009 à 10:23
j'utilise le fichier de configuration [App.config]:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
</configSections>
<connectionStrings>


</connectionStrings>




<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">





</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">





</roleManager>
</system.web>
</configuration>
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
16 juin 2009 à 10:45
"Database_DENA.mdf" => Donc tu travailles avec un fichier...

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
16 juin 2009 à 18:50
Donc ma proposition est peut-être correcte ;-)
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
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 ?

C# is amazing, enjoy it!
0
oaca Messages postés 9 Date d'inscription mardi 28 avril 2009 Statut Membre Dernière intervention 17 juin 2009
17 juin 2009 à 17:45
est ce qu'ilya une différence entre sql express et normal?
pour la chaine de connexion j'utilise
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
17 juin 2009 à 18:42
Dans le cas d'un sqlserver express

La chaine de connexion est

Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;

avec datasource =  Servername\SQLEXPRESS

cf http://www.connectionstrings.com/sql-server-2005#1

Pour plus de renseignement
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
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 ?

C# is amazing, enjoy it!
0
Rejoignez-nous