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

Thomasheros Messages postés 2 Statut Membre -  
 Utilisateur anonyme -
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
 
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 Statut Membre
 
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
 
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
Thomasheros
 
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
 
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
Thomasheros
 
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
 
voilà, je ne me rappelais plus ce que c'était pour la base ^^

Bon dev !

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