problème de mise à jour de la BD

problème de mise à jour de la BD - C#/.NET managed - Programmation

Marsh Posté le 21-08-2014 à 16:14:24    

Bonjour,  
J'ai un assez gros problème, je veux pouvoir mettre à jour ma base de données avec UPDATE. Lorsque le programme est exécuté et que je modifie une donnée il n'y a pas de problème j'arrive à la retrouver dans le programme. Par contre lorsque je relance le programme il n'y a pas la donnée modifiée.
Ce que je constate et qui est très bizarre, c'est que ma base de données ne se met jamais à jour alors que une fois le programme lancé, la modification effectué et que je lis dans la base il me la retrouve bien. C'est un peu comme si la base faisait un reset à chaque fois que je la relance....
voici mon code simple pour la modification dans la base:
<code>
string commandText = "UPDATE Location SET Telephone = @tel WHERE Annee = @annee AND Adresse = @adr;";
            using (SqlConnection connection = new SqlConnection(Properties.Settings.Default.DatabaseLocataireConnectionString))
            {
                SqlCommand command = new SqlCommand(commandText, connection);
                command.Parameters.Add("@annee", SqlDbType.NVarChar);
                command.Parameters["@annee"].Value = "2014";
                command.Parameters.AddWithValue("@tel", textBox2.Text);
                command.Parameters.AddWithValue("@adr", "46" );
                try
                {
                    connection.Open();
                    Int32 rowsAffected = command.ExecuteNonQuery();
                    Console.WriteLine("RowsAffected: {0}", rowsAffected);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
</code>
Les données de la base restent uniquement si je modifie les données directement dans la BD.
Alors pourquoi je n'arrive pas à modifier les données de la base en sachant que lorsque le programme tourne il arrive à lire dans la base des données qui n'y sont pas... ?

Reply

Marsh Posté le 21-08-2014 à 16:14:24   

Reply

Marsh Posté le 21-08-2014 à 17:05:07    

C'est quoi comme base? Si c'est du style sqlite / sql server compact la base source ne serait pas recopiée à chaque compilation par visual studio?


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Marsh Posté le 21-08-2014 à 19:40:11    

Salut et merci d'avoir répondu,
 
La base que j'utilise est celle intégrée à Visual Studio, je ne pourrais pas t'en dire plus.
J'ai peut-etre utilisé une mauvaise base de donnée, si oui peux - tu m'en informer et comment procéder pour avoir une base qui fonctionne bien  :D  
Merci

Reply

Marsh Posté le 22-08-2014 à 08:59:35    

Un moyen simple de vérifier c'est de ne pas passer par visual studio.
 
Tu génères ton programme en Release, ensuite dans l'explorateur tu vas dans on dossier bin\Release pour lancer l'exe.
 
Tu fais des modifs dans la base, enregistres, quittes le programme et relances. Si les modifs sont toujours là, c'est bien VS qui recopie la base source à chaque lancement, sinon c'est bien au niveau de ton programme ou de la base qu'il y a un soucis.


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Marsh Posté le 22-08-2014 à 20:07:49    

Oui ! en effet lorsque je ferme Visual et que je lance le programme seulement avec le .exe directement depuis le dossier je n'ai plus de problème !
Pourrais-tu m'expliquer quelles sont les modifications à faire pour que Visual ne recopie plus la base à chaque fois ? Merci

Reply

Marsh Posté le 23-08-2014 à 22:44:31    

Une personne pourrait me donner la solution pour que VS ne redéploie pas la BDD à chaque fois ?
Merci

Reply

Marsh Posté le 24-08-2014 à 22:43:21    

Dans l'explorateur de solution, tu sélectionne le fichier de ta base de données puis dans la fenetre de propriété, il y a une option, je ne sais plus exactement l'intitulé, mais en gros les options sont "toujours copier", "ne jamais copier", et "copier si plus récent"
 
J'imagine que pour l'instant il est sur toujours copier. Il suffit de sélectionner un des 2 autres en fonction de ce qui te conviens le mieux.


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Marsh Posté le 25-08-2014 à 01:48:42    

Salut !
 
Il m'affiche un message d'erreur lorsque je met sur "ne pas copier":
 
Échec d'une tentative d'attachement d'une base de données nommée automatiquement pour le fichier C:\Users\***\Debug\DatabaseLocataire.mdf. Il existe une base de données du même nom ou le fichier spécifié ne peut être ouvert ou il se trouve sur un partage UNC.
 
Et quand je met "copier si plus récent" ça ne règle pas mon problème.
 
Que faire ?

Reply

Marsh Posté le 25-08-2014 à 09:40:53    

Après avoir mis le réglage sur "ne pas copier", quand tu lances le debug, est ce que le fichier DatabaseLocataire.mdf existe dans ton bin\Debug ?
 
Il faut peut être le copier à la main la première fois


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Marsh Posté le 25-08-2014 à 14:38:52    

En effet, il fallait bien le copier à la main la première fois.
Mais je me suis aperçu d'une chose, c'est qu'il cherchait la base dans le dossier principale et non le dossier Debug.
J'ai donc modifier le chemin de connexion et maintenant tout marche comme prévu.
 
Je te remercie pour tout x1fr.
Je n'aurais pas pu y arriver sans toi.
 
:bounce:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed