Sqlce créer une base sans sql server

Soyez le premier à donner votre avis sur cette source.

Snippet vu 32 290 fois - Téléchargée 28 fois

Contenu du snippet

Voici comment créer une base SQLCe sur un Pocket PC sans SQL Server. On réalise cette base et on la remplie à partir d'un fichier texte

Source / Exemple :


Imports System.IO
Imports System.Data
Imports System.Data.SqlServerCe
Imports System.Text
    Public CheminCourant As String = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.GetName.CodeBase)
    Public Const ListeSeparation As String = ","
    Public Const FichierSQL = "\MaBase.sdf"
    Public Const FicGare = "\listeScores.txt"
#Region "Maintenance Base SQL ExistanTe(ou pas)"
    Public Function CréateDB()
        'Cette procédure permet de vérifier l'existence de la base SDF
        'Si elle n'existe pas on la crée
        If Not File.Exists(CheminCourant & FichierSQL) Then
            VerifieDB = False
            MsgBox("tentative de reconstruire les bases de données")
            'On refabrique la base
            If CreateBase() = True Then
                MsgBox("Création de la Base")
            Else
                MsgBox("Impossible de créer la BD")
                Exit Function
            End If
            ChargeBaseScore()
            VerifieDB = True
        Else
            VerifieDB = True
        End If
    End Function
    Public Function CreateBase() As Boolean
        CreateBase = False
        Dim cu_sql As String
        Dim MySqlCeEngine As New SqlCeEngine("Data Source=" & CheminCourant & FichierSQL)
        MySqlCeEngine.CreateDatabase()
        MySqlCeEngine.Dispose()
        Dim maconnexion As SqlCeConnection = Nothing
        Try
            maconnexion = New SqlCeConnection(("Data Source=" & CheminCourant & FichierSQL))
            maconnexion.Open()
            Dim mycmd As SqlCeCommand
            mycmd = maconnexion.CreateCommand
            'Ici implémenter la lecture d'un fichier SQL.
            'Base Score
            cu_sql = "CREATE TABLE Score(Nom ntext,Prenom ntext, Score int)"
            MsgBox(cu_sql)
            mycmd.CommandText = cu_sql
            mycmd.ExecuteNonQuery()
            MsgBox("Creation base Score: Succès")
            maconnexion.Close()
            CreateBase = True
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Exclamation)
        End Try
    End Function
    Public Sub ChargeBaseScore()
        MsgBox(" debut chargement gares")
        Cursor.Current = Cursors.WaitCursor
        Dim Req_sql As String
        Dim sr As StreamReader = New StreamReader(CheminCourant & FicGare)
        Dim StrInput As String
        Dim StrData() As String
        Dim maconnexion As SqlCeConnection = Nothing
        Try
            maconnexion = New SqlCeConnection(("Data Source=" & CheminCourant & FichierSQL))
            maconnexion.Open()
            Dim mycmd As SqlCeCommand
            mycmd = maconnexion.CreateCommand
            Do
                StrInput = sr.ReadLine
                If StrInput Is Nothing Then GoTo suite
                StrData = StrInput.Split(ListeSeparation)
                StrData(0) = Replace(StrData(0), "'", "''")
                Req_sql = "INSERT INTO Gare(Nom, Prenom, Score ) VALUES ('" & StrData(0) & "','" & StrData(1) & "'," & StrData(2) & ");"
                mycmd.CommandText = Req_sql
                mycmd.ExecuteNonQuery()
            Loop Until StrInput Is Nothing
suite:
            MsgBox("Fin de Chargement Score")
            sr.Close()
            maconnexion.Dispose()
            maconnexion.Close()
        Catch ex As Exception
            ShowErrors(ex)
            sr.Close()
            maconnexion.Dispose()
            maconnexion.Close()
            'MsgBox(ex.Message, MsgBoxStyle.Exclamation)
        End Try
        Cursor.Current = Cursors.Default
    End Sub
    Public Sub ShowErrors(ByVal e As SqlCeException)
        Dim errorCollection As SqlCeErrorCollection = e.Errors

        Dim bld As New StringBuilder
        Dim inner As Exception = e.InnerException

        If Not inner Is Nothing Then
            MessageBox.Show(("Inner Exception: " & inner.ToString()))
        End If

        Dim err As SqlCeError

        ' Enumerate each error to a message box.
        For Each err In errorCollection
            bld.Append((ControlChars.Cr & " Error Code: " & err.HResult.ToString("X")))
            bld.Append((ControlChars.Cr & " Message   : " & err.Message))
            bld.Append((ControlChars.Cr & " Minor Err.: " & err.NativeError))
            bld.Append((ControlChars.Cr & " Source    : " & err.Source))

            ' Retrieve the error parameter numbers for each error.
            Dim numPar As Integer
            For Each numPar In err.NumericErrorParameters
                If 0 <> numPar Then
                    bld.Append((ControlChars.Cr & " Num. Par. : " & numPar))
                End If
            Next numPar

            ' Retrieve the error parameters for each error.
            Dim errPar As String
            For Each errPar In err.ErrorParameters
                If [String].Empty <> errPar Then
                    bld.Append((ControlChars.Cr & " Err. Par. : " & errPar))
                End If
            Next errPar

            MessageBox.Show(bld.ToString())
            bld.Remove(0, bld.Length)
        Next err
    End Sub
#End Region

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
jeudi 2 février 2006
Statut
Membre
Dernière intervention
28 octobre 2007

Bonjour,
Merci pour ce code très utile quand on implémente pour la première fois une base SQLCe.
A+
Messages postés
2
Date d'inscription
mardi 18 mars 2003
Statut
Membre
Dernière intervention
17 mars 2007

Salut

Ton prog m'intéresse mais je ne sais pas comment installer celui-ci sur mon pDA
j'ai un ipaq avec WinCe5.0
je n'ai pas DotNet
J'ai une base Access sur mon PC que je voudrais avoir sur mon PDA ; je n'ai pas Access sur le PDA

merci de ton aide

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.