Problème de mise à jour de la base de donnée C#

Fermé
Thomasheros Messages postés 2 Date d'inscription jeudi 21 août 2014 Statut Membre Dernière intervention 21 août 2014 - 21 août 2014 à 15:51
 Utilisateur anonyme - 25 août 2014 à 15:31
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:


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);
}
}

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... ?
A voir également:

3 réponses

Utilisateur anonyme
21 août 2014 à 16:25
salut,

à première vue je dirai tout simplement que tu te trouve dans le cadre d'une transaction.

Quelle est la valeur de
Properties.Settings.Default.DatabaseLocataireConnectionString 
?

essaye de rajouter, à la suite de
ExecuteNonQuery
cette ligne :
command.Transaction.Commit();

naga
0
Thomasheros Messages postés 2 Date d'inscription jeudi 21 août 2014 Statut Membre Dernière intervention 21 août 2014
21 août 2014 à 19:29
Salut et merci d'avoir répondu,


La valeur de Properties.Settings.Default.DatabaseLocataireConnectionString :

Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DatabaseLocataire.mdf;Integrated Security=True;User Instance=True

Le command.Transaction.Commit(); n'a rien fait de plus.

PS: Il m'arrive des fois aussi lorsque je relance le programme, qu'il m'affiche bien la valeur que j'ai changer précédemment alors que dans la base la donnée n'est pas la même. ça me fait peur...
0
Utilisateur anonyme
22 août 2014 à 08:01
On dirai que tu ne "t'attaque" pas à la même base ..
Ta chaine de connexion ne comporte pas de fichier rattaché. A quel moment est faite la liaison ?
0
Apparemment c'est visual studio qui redéploie ma base à chaque fois.
Lorsque je lance le programme sans visual, avec juste le .exe il n'y a plus de problème.
Comment faudrait-il faire pour que visual laisse ma base tranquille ? ^^
0
Utilisateur anonyme
25 août 2014 à 07:53
je pense que tu as du lier ta base au gestionnaire => tu pourras acceder aux options pour lui signifier de ne pas la régénérer à chaque fois. Perso je ne pourrais pas t'en dire plus, je ne fais que des connexions directes, je n'ajoute pas ma base au projet.
0
c'est bon j'ai réussi, il y avait une option copier et c'était sur "toujours copier".
merci pour ton conseil !
0
Utilisateur anonyme
25 août 2014 à 15:31
voilà, je ne me rappelais plus ce que c'était pour la base ^^

Bon dev !

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