BDD local [Résolu]

Messages postés
27
Date d'inscription
mercredi 20 janvier 2010
Statut
Membre
Dernière intervention
5 septembre 2018
- - Dernière réponse : scoob79
Messages postés
27
Date d'inscription
mercredi 20 janvier 2010
Statut
Membre
Dernière intervention
5 septembre 2018
- 22 août 2018 à 10:27
Bonjour,

je rencontre des petits soucis avec la gestion de base de données, voici mon code

Imports System.Data.Linq
Imports System.Data.Linq.Mapping
Public Class Form4
    Dim MonTableAdapter As New DataSet1TableAdapters.Ping1TableAdapter
    Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim x As String, y As String
        x = "r"
        y = "y"
        MonTableAdapter.Insert(x, y)

    End Sub
End Class


Ma base "Ping" est bien créée (ID string et Action String) ainsi que mon tableadaptater la requête générée automatiquement est la suivante :

INSERT INTO Ping
                         (ID, Action)
VALUES        (@ID,@Action)


le programme se lance mais génère un exception (lors du pas à pas) avec l'erreur :

Une exception de première chance de type 'System.Data.SqlServerCe.SqlCeException' s'est produite dans System.Data.SqlServerCe.dll


Quelqu'un aurais une idée ?

Merci d'avance.
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
27059
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 décembre 2019
318
1
Merci
Bonjour,

Cela fait longtemps que je n'ai pas fais de sql server ni de dotnet... mais... tu cherches à insérer dans le champ ID une "string".
Es-tu sûr que ce champ attend ce type de variable ? Ne serait pas plutôt un numérique auto-incrémenté ? (et dans ce cas.. le mettre dans la requête n'a pas d'interet )

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 190 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jordane45
Messages postés
27
Date d'inscription
mercredi 20 janvier 2010
Statut
Membre
Dernière intervention
5 septembre 2018
0
Merci
Salut,

pour être plus simple je suis partie d'un nouveau projet pour tester :

Base :

MaBase > MaTable
|----- ID nvarchar 100 NON NON NON
|----- Action nvarchar 100 OUI NON NON

DataBase :

Insert :

INSERT INTO MaTable
                         (ID, Action)
VALUES        (@p1,@p2)


Form1 :

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        MaTableTableAdapter.Insert("test", "test")
    End Sub
End Class


Lors de l’exécution pas à pas le code plante dans le fichier Database1Dataset1.Designer.vb sur la section :

        <Global.System.Diagnostics.DebuggerNonUserCodeAttribute(),  _
         Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")>  _
        Protected Friend ReadOnly Property Adapter() As Global.System.Data.SqlServerCe.SqlCeDataAdapter
            Get
                If (Me._adapter Is Nothing) Then
                    Me.InitAdapter
                End If
                Return Me._adapter
            End Get
        End Property


Erreur :

Une exception de première chance de type 'System.Data.SqlServerCe.SqlCeException' s'est produite dans System.Data.SqlServerCe.dll


Commenter la réponse de scoob79
Messages postés
27
Date d'inscription
mercredi 20 janvier 2010
Statut
Membre
Dernière intervention
5 septembre 2018
0
Merci
Bon j'ai essayé avec un autre code mais c'est pas mieux.

    Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Try
            Dim SQLConn = New SqlConnection(), cmd As String
            SQLConn.ConnectionString = "Data Source=|DataDirectory|\BDD.sdf;Initial Catalog=Ping"

            SQLConn.Open()

            cmd = "INSERT INTO MaTable (ID, Action) VALUES ('TEST', 'TEST')"

            Dim Command = New SqlCommand(cmd, SQLConn)
            Command.ExecuteNonQuery()
            SQLConn.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
            End

        End Try
    End Sub

Enfin peut-être une avancée le message d'erreur est maintenant :

Une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou n'est pas accessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions distantes. (provider: SQL Network Interfaces, error: 26 - Erreur lors de la localisation du serveur/de l'instance spécifiés)

Mais toujours au même point...
Commenter la réponse de scoob79
Messages postés
27
Date d'inscription
mercredi 20 janvier 2010
Statut
Membre
Dernière intervention
5 septembre 2018
0
Merci
Salut,

J'ai fini par trouver une solution qui fonctionne correctement.

Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlServerCe

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sqlcon As New SqlCeConnection("Data Source=D:\Users\u165147\documents\visual studio 2010\Projects\WindowsApplication5\WindowsApplication5\Database1.sdf")
        Dim sqlcmd As New SqlCeCommand, sqltext As String
        Try
            sqlcon.Open()
            sqltext = "INSERT INTO [table](ID, Nom) VALUES ('coucou','coucou')"
            sqlcmd.CommandText = sqltext
            sqlcmd.Connection = sqlcon
            sqlcmd.ExecuteNonQuery()
            sqlcon.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Class


Et encore une fois sur youtube => https://www.youtube.com/watch?v=pnI0tgIR9fg&t=8s

Le Data Source peut être modifier comme suit si la base est dans le même répertoire que l'application.

"Data Source=|DataDirectory|\Database1.sdf"


@+
Commenter la réponse de scoob79