IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Update SQL depuis un datagridview vers la base de données.


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 19
    Points : 17
    Points
    17
    Par défaut Update SQL depuis un datagridview vers la base de données.
    Bonjour, cela fait 2 jours que j'essaye de résoudre mon problème qui pourrait paraître simple. Je ne suis que débutant en C#.
    Alors voici mon problème: quand je lance l'application, tout s'affiche correctement, mais si j'essaye d'insérer de nouvelles informations, cela ne met pas à jour la base de données, mais le datagridview l'affiche. Le plus étonnant et que si je ferme et relance l'application, les données insérées s'affichent encore, mais à court terme(je relance 10 minutes plus tard je ne les vois plus). J'ai pourtant récupérer les bonnes informations depuis l'élément sélectionné quand on clique sur le bouton "sauvegarder" et je pense avoir mis une bonne requête. Si vous me demandez si j'ai des erreurs, et bien non, aucune.
    Merci de bien vouloir m'aider à résoudre ce problème.

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    public partial class serveurs : Form
    {  
            public serveurs()
            {
                InitializeComponent();
     
     
     
                serveursDataGridView.Columns[0].Visible = false;
     
            }
     
     
     
            private void serveursBindingNavigatorSaveItem_Click(object sender, EventArgs e)
            {
                String cnxString = SDP_Connector_2.Properties.Settings.Default.sdp_serversConnectionString;
     
                SqlConnection myConnection = new SqlConnection(cnxString);
     
     
                myConnection.Open();
     
     
                this.Validate();
                this.serveursBindingSource.EndEdit();
                this.tableAdapterManager.UpdateAll(this.sdp_serversDataSet);
     
     
     
                var iRows = serveursDataGridView.CurrentRow;
     
     
     
                string[] split = null;
     
                split = iRows.ToString().Split(new char[] { '=', '}' }, 3);
     
                string iRows1 = split[1];
     
                int iRows2 = Convert.ToInt32(iRows1);
     
     
     
     
                SqlTransaction transaction = myConnection.BeginTransaction();
     
     
     
     
                if (iRows2 != -1)
                {
                    var id = serveursDataGridView.Rows[iRows2].Cells[0].Value;
                    var ip = serveursDataGridView.Rows[iRows2].Cells[1].Value;
                    var description = serveursDataGridView.Rows[iRows2].Cells[2].Value;
     
                    SqlCommand insert = myConnection.CreateCommand();
     
                    insert.CommandText = "INSERT INTO serveurs (ip, description) VALUES (@ip, @description)";
                    insert.Parameters.Add("@ip", SqlDbType.VarChar, 20);
                    insert.Parameters["@ip"].Value = ip;
                    insert.Parameters.Add("@description", SqlDbType.VarChar, 50);
                    insert.Parameters["@description"].Value = description;
     
     
                    insert.Transaction = transaction;
                    insert.ExecuteNonQuery();
                    transaction.Commit();
                    MessageBox.Show("Sauvegarde effectuée avec succès.");
     
     
                }
     
     
                myConnection.Close();
     
            }
     
            private void serveurs_Load(object sender, EventArgs e)
            {
                // TODO: cette ligne de code charge les données dans la table 'sdp_serversDataSet.serveurs'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
                this.serveursTableAdapter.Fill(this.sdp_serversDataSet.serveurs);
     
            }
     
            private void button1_Click(object sender, EventArgs e)
            {            
                this.Close();
            }
    }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par didzym Voir le message
    Alors voici mon problème: quand je lance l'application, tout s'affiche correctement, mais si j'essaye d'insérer de nouvelles informations, cela ne met pas à jour la base de données, mais le datagridview l'affiche. Le plus étonnant et que si je ferme et relance l'application, les données insérées s'affichent encore
    Euh... si les données ne sont pas dans la DB, je ne vois pas trop par quel miracle elles seraient encore affichées au redémarrage

    Citation Envoyé par didzym Voir le message
    mais à court terme(je relance 10 minutes plus tard je ne les vois plus)
    Tu es sûr que c'est juste une question de temps ? Ce ne serait pas plutôt lié au fait que tu as recompilé entre temps ?

    Voilà ce qui se passe à mon avis : le fichier de base de données qui est dans ton projet n'est pas directement utilisé par le programme. Il est copié dans le répertoire de sortie (bin\Debug ou bin\Release), et c'est cette copie qui est utilisée. Donc si tu ouvres la DB originale qui est dans le projet, tu ne vois pas les modifications, puisque c'est la copie qui a été modifiée. Et quand tu recompiles, la DB originale est à nouveau copiée vers le répertoire de sortie, ce qui écrase les modifications précédentes. Sélectionne le fichier DB dans ton projet, affiche ses propriétés, et modifie l'option "Copier vers le répertoire de sortie" en "Ne pas copier", ça devrait régler ton problème...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    Merci pour ta réponse, mais maintenant que j'ai modifié cette option, mon programme ne veut plus se connecter à la base de données.
    erreur:
    System.Data.SqlClient.SqlException (0x80131904):Échec d'une tentative d'attachement d'une base de données nommée automatiquement pour le fichier C:\Documents and Settings\***\Mes documents\Visual Studio 2010\Projects\***\***\bin\Debug\sdp_servers.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.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Euh... alors là je vois pas trop. Pourtant la seule différence est que le fichier n'est plus copié à chaque recompilation

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/04/2013, 20h41
  2. importer un fichier .sql vers une base de donnée mysql
    Par baaby dans le forum Administration
    Réponses: 1
    Dernier message: 19/07/2012, 14h14
  3. Réponses: 14
    Dernier message: 23/04/2012, 22h32
  4. Réponses: 6
    Dernier message: 18/02/2011, 17h21
  5. Réponses: 3
    Dernier message: 16/07/2009, 18h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo