Sqlce extraire les données d'une base au format texte

Soyez le premier à donner votre avis sur cette source.

Snippet vu 24 313 fois - Téléchargée 29 fois

Contenu du snippet

Ces quelques lignes permettent d'extraire les données d'une base de donnée
Le fichier Requete.txt doit-être dans le même répertoire que l'appli

Source / Exemple :


Imports System.IO
Imports System.Text
Imports System.Data.SqlServerCe
Module Data
#Region "Declarations"
    Public CheminCourant As String = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.GetName.CodeBase)
    Public Const ListeSeparation = ";"
#End Region
    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
    Public Sub LireRequete()
        Dim Sr As New StreamReader(CheminCourant & "\Requete.txt")
        Dim StrInput, NomFichier, Requete, NomBase, Nombre As String
        Try
            NomBase = StrInput
            Requete = Sr.ReadLine
            Nombre = Sr.ReadLine
            NomFichier = Sr.ReadLine
            MsgBox("Requete " & Requete & "(" & CStr(Nombre) & ") sur " & NomBase & " pour " & NomFichier)
            ExtractData(NomBase, Nombre, Requete, NomFichier)
            Sr.Close()
        Catch ex As Exception
            ShowErrors(ex)
        End Try
    End Sub
    Public Sub ExtractData(ByVal NomBase As String, ByVal Nombre As String, ByVal Requete As String, ByVal NomFichier As String)
        Dim maconnexion As SqlCeConnection = Nothing
        Dim Detail() As String
        Dim Sw As New StreamWriter(CheminCourant & NomFichier, True)
        Dim I, Compteur, Etat As Integer
        Dim Tampon As String
        Detail = Nombre.Split(ListeSeparation)
        I = 0
        Try
            maconnexion = New SqlCeConnection(("Data Source=" & CheminCourant & NomBase))
            maconnexion.Open()
            Dim mycmd As SqlCeCommand
            Dim MonResultat As SqlCeDataReader
            mycmd = maconnexion.CreateCommand
            mycmd.CommandText = Requete
            MonResultat = mycmd.ExecuteReader
            While MonResultat.Read()
                If Detail(1) = "str" Then Tampon = MonResultat.GetString(I)
                If Detail(1) = "int" Then Tampon = CStr(MonResultat.GetInt16(I))
                If CInt(Detail(0)) > 0 Then
                    For I = 1 To CInt(Detail(0))
                        Tampon = Tampon & ListeSeparation
                        If Detail(I + 1) = "str" Then Tampon = Tampon & MonResultat.GetString(I)
                        If Detail(I + 1) = "int" Then Tampon = Tampon & CStr(MonResultat.GetInt16(I))
                    Next
                End If
                Sw.WriteLine(Tampon)
                Tampon = ""
                I = 0
                Compteur += 1
            End While
            Sw.Flush()
            Sw.Close()
            maconnexion.Dispose()
            maconnexion.Close()
            MsgBox(Compteur & " enregistrements exportés dans " & NomFichier)
        Catch ex As Exception
            MsgBox(ex.Message & "-" & CStr(Compteur), MsgBoxStyle.Exclamation)
            ShowErrors(ex)
        End Try
    End Sub
End Module

Conclusion :


exemple d'un fichier Requete.txt
\My Documents\MaBase.sdf
SELECT Nom, Prenom, Points FROM Score
4;str;str;int
\Score.csv

Il est très pratique d'utiliser query analyser pour naviguer dans les base et connaître le nom des champs

A voir également

Ajouter un commentaire

Commentaires

cs_Stephane33
Messages postés
630
Date d'inscription
samedi 15 février 2003
Statut
Modérateur
Dernière intervention
9 octobre 2011
-
Désolé TUDT mais le français est de rigueur ;
You can see this animated presentation here http://www.asp.net/mobile/flasharchitecture.aspx?tabindex=3&tabID=44
But I do not practise Asp.net
tudt_phochome
Messages postés
1
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
11 mai 2007
-
help me
i want one web prorgamming with mobile (asp.net)
ciagar
Messages postés
12
Date d'inscription
mardi 11 mars 2003
Statut
Membre
Dernière intervention
1 février 2007
-
Merci d'avoir partager ce code. Il va surement me servir.
OULKABIR
Messages postés
15
Date d'inscription
samedi 9 octobre 2004
Statut
Membre
Dernière intervention
1 février 2013
-
TRES BIEN

MAIS JE VEUX SAVOIR COMMENT JE PEUT SE CONNECTER DIRECTEMENT A SQL SERVER 2000 SANS PASSER PAR SQLCE
MAJ DES DONNEES DIRECT SUR SQL SERVER 2000 AVEC POCKET PC
MERCI
oulkabirabd@hotmail.com

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.