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

ADO.NET Discussion :

[VB.Net] Enregistrement dans bdd ne fonctionne pas


Sujet :

ADO.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Points : 123
    Points
    123
    Par défaut [VB.Net] Enregistrement dans bdd ne fonctionne pas
    Bonjour à tous toujours dans mes problèmes avec l'utilisation d'une base de données j'essaye tant bien que mal à insérer de nouvelles lignes dans ma BDD mais il n'y a rien à faire voici le code que j'exécute:
    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
     
            strConn = "Data Source=bdd.sdf;Password=password"
     
            'Initialisation de la chaîne contenant l'instruction SQL
     
            strSql = "INSERT INTO MATABLE (Names, Money) Values('" & rsacTb.Text & "','" & moneyCombo.SelectedItem & "')"
     
            'Instanciation d'un Objet Connexion
     
            ObjetConnection = New SqlCeConnection
     
            'Donner à la propriété ConnectionString les paramètres de connexion
     
            ObjetConnection.ConnectionString = strConn
     
            'Ouvrir la connexion
     
            ObjetConnection.Open()
     
            'Instancier un objet Commande
     
            ObjetCommand = New SqlCeCommand(strSql)
     
            'Instancier un objet Adapter
     
            ObjetDataAdapter = New SqlCeDataAdapter(ObjetCommand)
     
            'initialiser l'objet Command
     
            ObjetCommand.Connection() = ObjetConnection
     
            'initialiser l'objet OleCBComandBuilder (sinon pas d'update)
     
            ObjetCB = New SqlCeCommandBuilder(ObjetDataAdapter)
     
            'Avec l'aide de la propriété Fill du DataAdapter charger le DataSet
     
            ObjetDataAdapter.Fill(ObjetDataSet, "MATABLE")
     
            'Créer une datatable à partir du dataset
     
            ObjetDataTable = ObjetDataSet.Tables("MATABLE")
     
            'Mettre dans le DataGrid une table  DataTable
            dataGrid.DataSource = ObjetDataTable
    L'enregistrement s'affiche bien dans le datagrid mais lorsque je clique droit sur ma table et choisi "afficher les données de la table" il n'y a pas de modification.

    J'ai d'abord pensé que ma requette est fausse alors j'ai essayer comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strSql = "INSERT INTO RSAC (Names, Money) Values('FR','EUR')"
    Mais le résultat est identique
    Merci

  2. #2
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Ton code est difficilement lisible et il y a beaucoup de confusions.
    Pour répondre "rapidement", dans tes lignes, il n'y a aucun insert ou d'update d’exécuter.

    Tu mélanges dans les mêmes lignes, un INSERT et un SELECT. En mélangeant les objets.

    De plus il faut choisir entre faire une requête INSERT directement en base, et utiliser une datatable lié a une base de données et faire un update via un dataadapter.

    Que souhaites tu donc faire ? Dans l'ordre logique des choses?
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Points : 123
    Points
    123
    Par défaut
    Dans l'ordre logique des choses je dirais faire un insert directement en base

  4. #4
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Utilise les requêtes paramétrées.
    Tu gagneras en sécurité, en lisibilité et en rapidité.
    Jette un coup d'oeil au tutoriel dont je t'ai mis le lien, une fois habitué tu n'y verras plus que des avantages.

    Pour ce qui est du problème de fond, as-tu une erreur ? Si oui, laquelle ?

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Points : 123
    Points
    123
    Par défaut
    Je n'ai aucune erreur qui remonte (pas d'exception levé) mais simplement l'insert into n'ajoute pas de nouvelle ligne dans ma table. Je regarde la page que tu m'a mis en liens !

  6. #6
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Comme le dit Mactwist69, tu utilises des objets utiles pour une sélection alors que tu veux faire une insertion.
    Pour moi, un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjetCommand.ExecuteNonQuery()
    après ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjetCommand = New SqlCeCommand(strSql)
    doit faire l'affaire.

  7. #7
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Tu devrais relire un peu de doc sur ADO, Developpez a de très bon tuto:

    http://dotnet.developpez.com/articles/ado1/vbnet/


    Tu y trouveras ce genre de chose:

    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
    'Exemple d'utilisation d'un objet Command
    Imports System
    Imports System.Data.SqlClient
    Imports System.IO
     
     
    Namespace ExempleAdoNetVBNET 
        Public Class CommandeSQL 
            Public Shared Sub Main() 
                Dim strConnexion As String = "Data Source=localhost; Integrated Security=SSPI;" + "Initial Catalog=Northwind"
                Dim strRequete As String = "INSERT INTO Region VALUES (5,'Sud')"
                Try 
                    Dim oConnection As New SqlConnection(strConnexion)
                    Dim oCommand As New SqlCommand(strRequete, oConnection)
                    oConnection.Open()
                    oCommand.ExecuteNonQuery()
                    oConnection.Close()
     
                Catch e As Exception 
                    Console.WriteLine(("L'erreur suivante a été rencontrée :" + e.Message)) 
                End Try 
            End Sub 'Main         
        End Class 'CommandeSQL     
    End Namespace 'ExempleAdoNetVBNET
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Points : 123
    Points
    123
    Par défaut
    Donc après plusieurs essai de requêtes paramétrés l'obtient toujours le même résultat voici ce que j'utilise :

    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
     
     
            Dim myCommand As SqlCeCommand
            Dim maRequete As String
     
            strConn = "Data Source=bddtest.sdf;Password=password"
     
            ObjetConnection = New SqlCeConnection
     
            'Donner à la propriété ConnectionString les paramètres de connexion
     
            ObjetConnection.ConnectionString = strConn
            '  '
            'Récupération de la chaine de connexion au serveur de base de données
     
            '
            'Requete mise a jour de la table client
            maRequete = "INSERT INTO [RSAC] ( [Names],[Money]) VALUES (@Names, @Money)"
     
            'Création de la commande SQL
            myCommand = New SqlCeCommand(maRequete, ObjetConnection)
     
            'Création et décalartion des paramètres
            With myCommand.Parameters
                .Add(New SqlCeParameter("@Names", SqlDbType.NVarChar, 100))
                .Add(New SqlCeParameter("@Money", SqlDbType.NVarChar, 100))
            End With
     
            'Attribution des valeurs aux paramètres
            With myCommand
                .Parameters("@Names").Value = rsacTb.Text
                .Parameters("@Money").Value = moneyCombo.SelectedItem
            End With
     
     
            Try
     
                'Execution de la requête
                myCommand.Connection.Open()
                myCommand.ExecuteNonQuery()
                myCommand.Connection.Close()
     
            Catch ex As SqlException
     
                Response.Write(ex.Message)
     
            End Try
    Les données vont bien affiché dans mon datagrid mais ne sont pas inséré dans la base
    j'ai essayé aussi de rajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ObjetCommand.ExecuteNonQuery()
    apres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ObjetCommand = New SqlCeCommand(strSql)
    Dans mon ancien code
    Mais je me retrouve avec une exception
    ExecuteNonQuery : la propriété Connection n'a pas été initialisée.
    Donc je sais pas trop comment faire dois je utilisé les requêtes paramétrée ou me servir d'un dataSet pour modifier ma base et puis comment surtout

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Points : 123
    Points
    123
    Par défaut
    Merci mactwist69 l'exemple que tu ma donnée me donne exactement le même résultat

    s'affiche dans le datagrid mais pas n'est pas présent dans la base j'y comprend plus rien

  10. #10
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Citation Envoyé par bakman Voir le message
    Merci mactwist69 l'exemple que tu ma donnée me donne exactement le même résultat

    s'affiche dans le datagrid mais pas n'est pas présent dans la base j'y comprend plus rien
    Y'a un truc que je (tu?) comprends pas....

    Tu dis que le datagrid s'affiche... je ne vois pas comment tu peux afficher quoi que ce soit dans un datagrid avec le code que je t'ai donner... un mystere...

    Mais bon, comme tu utilises Windows CE, le code que je t'ai donné n'utilise pas les objets, ce, je te suggère de retourner sur le code avec les requêtes paramétrés.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Points : 123
    Points
    123
    Par défaut
    j'ai fait un bouton pour rafraichir il fait un Select * from matable
    le met dans un dataset et l'affiche dans le datagrid.

    En fait pour vérifier si les données ou bien été enregistrer dans ma base je vais dans l'explorateur de bdd sur ma table dans le menu contextuel je fait afficher les données de la table et je ne vois pas le dernier enregistrement

  12. #12
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Points : 123
    Points
    123
    Par défaut
    Voici le code de mon bouton refresh:
    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
     
    strConn = "Data Source=bddtest.sdf;Password=password"
     
            'Initialisation de la chaîne contenant l'instruction SQL
     
            strSql = "SELECT RSAC.* FROM RSAC"
     
            'Instanciation d'un Objet Connexion
     
            ObjetConnection = New SqlCeConnection
     
            'Donner à la propriété ConnectionString les paramètres de connexion
     
            ObjetConnection.ConnectionString = strConn
     
            'Ouvrir la connexion
     
            ObjetConnection.Open()
     
            'Instancier un objet Commande
     
            ObjetCommand = New SqlCeCommand(strSql)
     
            'Instancier un objet Adapter
     
            ObjetDataAdapter = New SqlCeDataAdapter(ObjetCommand)
     
            'initialiser l'objet Command
     
            ObjetCommand.Connection() = ObjetConnection
     
            'initialiser l'objet OleCBComandBuilder (sinon pas d'update)
     
            ObjetCB = New SqlCeCommandBuilder(ObjetDataAdapter)
     
            'Avec l'aide de la propriété Fill du DataAdapter charger le DataSet
     
            ObjetDataAdapter.Fill(ObjetDataSet, "RSAC")
     
            'Créer une datatable à partir du dataset
     
            ObjetDataTable = ObjetDataSet.Tables("RSAC")
     
            'Mettre dans le DataGrid une table  DataTable
     
            rsacGrid.DataSource = ObjetDataTable
    Et le code du bouton Add
    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
     
            Dim myCommand As SqlCeCommand
            Dim maRequete As String
            strConn = "Data Source=bddtest.sdf;Password=password"
     
            ObjetConnection = New SqlCeConnection
     
            'Donner à la propriété ConnectionString les paramètres de connexion
     
            ObjetConnection.ConnectionString = strConn
     
            'Récupération de la chaine de connexion au serveur de base de données
     
            'Requete mise a jour de la table client
            maRequete = "INSERT INTO [RSAC] ( [Names],[Money]) VALUES (@Names, @Money)"
     
            'Création de la commande SQL
            myCommand = New SqlCeCommand(maRequete, ObjetConnection)
     
            'Création et décalartion des paramètres
            With myCommand.Parameters
                .Add(New SqlCeParameter("@Names", SqlDbType.NVarChar, 100))
                .Add(New SqlCeParameter("@Money", SqlDbType.NVarChar, 100))
            End With
     
            'Attribution des valeurs aux paramètres
            With myCommand
                .Parameters("@Names").Value = rsacTb.Text
                .Parameters("@Money").Value = moneyCombo.SelectedItem
            End With
     
     
            Try
     
                'Execution de la requête
                myCommand.Connection.Open()
                myCommand.ExecuteNonQuery()
                myCommand.Connection.Close()
     
            Catch ex As SqlException
                MsgBox(ex.Message)
            End Try

  13. #13
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Bakman, quelles valeurs essayes tu d'insérer dans ta bdd ? Comment t'y prends-tu ?
    Dans ce que tu dis, je ne comprends pas le fonctionnement :
    - tu as une grid dans laquelle tu affiches le contenu de ta table RSAC
    - à quel moment insères-tu des données dans la grid ?
    - comment ?

  14. #14
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Non, il insère directement en base, dans une procédure, et grâce a une autre il affiche le contenu de la bdd.

    Il faut regarder pourquoi la requête ne passe pas.

    Es tu passé au pas à pas, voir les valeurs et ce qu'il se passe?
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  15. #15
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Points : 123
    Points
    123
    Par défaut
    Je rentre de week end
    Je vais passé pas à pas pour voir quelles valeurs sont envoyé je vous fait un récapitulatif dans la matinée merci encore pour vos réponse

  16. #16
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Points : 123
    Points
    123
    Par défaut
    Après plusieurs passage au débuggeur je ne vois rien d'anormal
    Voici comment je procède:

    1) J'ai créé une Bdd "bddtest.sdf" qui contient une table RSAC
    Cette même table possède deux colonnes "Names" et "Money"

    2) J'ai créé un dataSet "bddtestDataSet" auquel à l'aide de l'assistant j'ai lié la table RSAC de la bdd "bddtest.sdf"

    3) Dans un formulaire "RSACForm" j'ai placé un datagrid dans lequel je fait pointer la propriété DataSource vers la table RSAC de "bddtestDataSet"

    4) 3 Bouton sont présent dans "RSACForm" "Add" , "Delete", "Refresh" ainsi qu'une textBox "rsacTb" et une comboBox "moneyCombo"

    5) A l'aide de visual studio j'ai inséré quelques tuple dans "bddtest.sdf"

    6) voici le code du bouton refresh (cette fonction s'execute aussi au chargement de RSACForm)
    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
     
    'Rafraichir BDD
        Private Sub refreshBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles refreshBtn.Click, MyBase.Load
            Try
                ObjetDataSet.Clear()
            Catch
                MsgBox("erreur")
            End Try
     
            strConn = "Data Source=bddtest.sdf;Password=password"
     
            'Initialisation de la chaîne contenant l'instruction SQL
     
            strSql = "SELECT RSAC.* FROM RSAC"
     
            'Instanciation d'un Objet Connexion
     
            ObjetConnection = New SqlCeConnection
     
            'Donner à la propriété ConnectionString les paramètres de connexion
     
            ObjetConnection.ConnectionString = strConn
     
            'Ouvrir la connexion
     
            ObjetConnection.Open()
     
            'Instancier un objet Commande
     
            ObjetCommand = New SqlCeCommand(strSql)
     
            'Instancier un objet Adapter
     
            ObjetDataAdapter = New SqlCeDataAdapter(ObjetCommand)
     
            'initialiser l'objet Command
     
            ObjetCommand.Connection() = ObjetConnection
     
            'initialiser l'objet OleCBComandBuilder (sinon pas d'update)
     
            ObjetCB = New SqlCeCommandBuilder(ObjetDataAdapter)
     
            'Avec l'aide de la propriété Fill du DataAdapter charger le DataSet
     
            ObjetDataAdapter.Fill(ObjetDataSet, "RSAC")
     
            'Créer une datatable à partir du dataset
     
            ObjetDataTable = ObjetDataSet.Tables("RSAC")
     
            'Mettre dans le DataGrid une table  DataTable
     
            rsacGrid.DataSource = ObjetDataTable
     
        End Sub
    Lorsque j'ouvre RSACForm la procédure s'exécute sans exceptions et les tuples (Names, Money) entrées via visual studio s'affiche ex: Toto , Francs

    7) Le Bouton Add doit Executer une requette "INSERT INTO" via une requette paramétrée depuis le textBox "rsacTb" et le combobox "moneyCombo" puis appelle la fonction ci-dessus
    Voici la fonction :
    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
     
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Dim myCommand As SqlCeCommand
            Dim maRequete As String
            strConn = "Data Source=bddtest.sdf;Password=password"
     
            ObjetConnection = New SqlCeConnection
     
            'Donner à la propriété ConnectionString les paramètres de connexion
     
            ObjetConnection.ConnectionString = strConn
            ' 
            'Récupération de la chaine de connexion au serveur de base de données
     
            'Requete mise a jour de la table client
            maRequete = "INSERT INTO [RSAC] ([Names],[Money]) VALUES (@Names, @Money)"
     
     
     
            'Création de la commande SQL
            myCommand = New SqlCeCommand(maRequete, ObjetConnection)
     
            'Création et décalartion des paramètres
            With myCommand.Parameters
                .Add(New SqlCeParameter("@Names", SqlDbType.NVarChar, 20))
                .Add(New SqlCeParameter("@Money", SqlDbType.NVarChar, 20))
            End With
     
            'Attribution des valeurs aux paramètres
            With myCommand
                .Parameters("@Names").Value = rsacTb.Text
                .Parameters("@Money").Value = moneyCombo.SelectedItem
            End With
     
     
            Try
     
                'Execution de la requête
                myCommand.Connection.Open()
                '  myCommand.ExecuteNonQuery()
                myCommand.Connection.Close()
     
                ObjetConnection = Nothing
            Catch ex As SqlException
                MsgBox(ex.Message)
     
                '            Response.Write(ex.Message)
     
            End Try
            Call refreshBtn_Click(Me, e)
     
        End Sub
    8) Après l'exécution de cette fonction il apparait dans le datagrid les nouvelles valeurs entrées.

    9) Je ferme le programme est vérifie via visual studio "Explorateur de base de données->bddtest.sdf->Tables->Rsac->afficher les données de la table".
    Surprise ou plutôt mauvaise surprise l'enregistrement qui pourtant apparaissait dans le datagrid n'est pas présent

  17. #17
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Visiblement tu dois travailler sur deux bases de données différentes sans te rendre compte. Check bien tes chaines de connexions.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  18. #18
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Points : 123
    Points
    123
    Par défaut
    Franchement bravo!
    Apparemment j'utilisai la bdd qui est dans le répertoire bin/Debug
    alors qu'il fallait utilisé celle qui est dans le repertoire du projet.
    Cela me fait soulever une question à présent laquelle faut il utilisé faut t'il
    re-paramétrée visual studio et comment anticiper ce genre de problème lorsque le programme sera en production?

  19. #19
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Une solution pour ce genre de probllème est l'utisation des fichiers de configuration app.conf ou web.conf comme cela en production vous n'aurez plus qu'à éditer le fichier via un éditeur et préciser la chaine de connexion.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  20. #20
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Points : 123
    Points
    123
    Par défaut
    C'est noté encore merci et bonne journée!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 8
    Dernier message: 27/03/2012, 12h34
  2. Réponses: 3
    Dernier message: 19/09/2007, 14h09
  3. Réponses: 2
    Dernier message: 09/04/2006, 17h05
  4. Réponses: 23
    Dernier message: 07/02/2006, 09h43
  5. [VB.NET] Enregistrer une BDD sous un autre format
    Par botanique dans le forum Windows Forms
    Réponses: 9
    Dernier message: 16/01/2006, 15h42

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