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

VB.NET Discussion :

Créer une table SQLite pour stocker des données hétérogénes. [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut Créer une table SQLite pour stocker des données hétérogénes.
    Bonjour à tous,
    je me pose la question du choix du format de données pour stocker des données de mon programme dans une table SQLite que j'appelle "Settings" et possédant 2 colonnes "Key" et "Value".

    "Key" sera toujours du string mais "Value" pourra être du Boolean, du String, de l'Integer....Vous voyez l'idée.

    J'hésite à utiliser le format TEXT ou BLOB.....j'aimerais bien votre avis.

    Pour le BLOB j'ai un exemple ci-dessous pour lire les données mais je ne sais pas les écrires par contre...

    Ca serait très sympa si je pouvais avoir un peu d'aide la dessus car je bloque.

    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
       Public Function LoadDataLocalStorage(FileName As String) As DataTable
                Dim dt As New DataTable()
                Dim query As String = "select * FROM Settings"
     
                Dim NewTable As New DataTable(("Settings"))
                NewTable.Columns.Add("Key", GetType(String))
                NewTable.Columns.Add("Value", GetType(String))
     
     
                Try
                    Dim cnn As New SQLiteConnection(String.Format("Data Source={0}", FileName ))
                    cnn.Open()
                    Dim mycommand As New SQLiteCommand(cnn)
                    mycommand.CommandText = query
                    Dim reader As SQLiteDataReader = mycommand.ExecuteReader()
                    dt.Load(reader)
                    reader.Close()
                    cnn.Close()
     
                Catch e As Exception
                    MessageBox.Show(String.Format("{0}." & Environment.NewLine & "le fichier '{1}' n'existe pas ou est invalide, vérifier l'installation du logiciel.", e.Message, FileName), "Erreur d'ouverture du fichier LocalStorage", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    Application.Exit()
                    Return Nothing
                End Try
     
                For Each OldRow As DataRow In dt.Rows
                    Dim NewRow As DataRow = NewTable.NewRow
                    Dim Key As String
                    Dim Value As String
                    If Not IsDBNull(OldRow("Key")) Then
                        Key = CStr(OldRow("Key"))
                    Else
                        Key = Nothing
                    End If
                    If Not IsDBNull(OldRow("Value")) Then
                        Value = Text.Encoding.Unicode.GetString(CType(OldRow("Value"), Byte()))
                    Else
                        Value = Nothing
                    End If
                    NewRow("Key") = Key
                    NewRow("Value") = Value
                    NewTable.Rows.Add(NewRow)
                    If Key = "player.nameFirst" Then GameSettings.PlayerNameFirst = Value
                    If Key = "player.nameLast" Then GameSettings.PlayerNameLast = Value
                    If Key = "player.nameNick" Then GameSettings.PlayerNameNick = Value
                    If Key = "player.country" Then GameSettings.PlayerCountry = Value
                    If Key = "player.countryCode" Then GameSettings.PlayerCountryCode = Value
                Next
     
                Return NewTable
            End Function
    Merci beaucoup à vous.

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Bonjour,

    En fait, ça va dépendre des données que tu mets dedans.
    Si tu te contentes d'y mettre des données scalaires (chaines, entiers, valeurs numériques, dates, booléens), le type TEXT peut suffire.
    Si tu veux y stocker du binaires (images, audio, video, pdf, documents office, etc...), il vaut mieux partir sur du BLOB.

    Et pour éviter des futurs problèmes, il faudrait également veillez à respecter les spécificités de typage de Sqlite (notamment si tu dois faire des cast SQL).
    Les booléen sont des entiers 0 ou 1 ("TRUE" ou "FALSE" sont acceptés sur les dernières versions)
    Les dates si elles sont stockés sous formes de texte doivent être formatées en ISO 8601
    Les valeurs numériques n'ont pas de séparateurs de milliers et ont un point en guise de séparateur décimal.

    Plus d'info sur les types Sqlite
    https://www.sqlite.org/datatype3.html

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut
    Merci beaucoup Popo, c'est exactement la réponse qu'il me fallait. je pense partir sur du TEXT du coup. Merci beaucoup.

  4. #4
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    bonsoir,
    le BLOB c'est comme in variant tu y stock du texte, du numérique ou du BLOB


    Nom : Sans titre.png
Affichages : 125
Taille : 262,5 Ko

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut
    Merci Thumb down mais j'ai déjà fait mon choix en TEXT. Par contre il me manquait un Browser, merci de m'avoir fait découvrir DB Browser for SQLite

  6. #6
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Citation Envoyé par Thumb down Voir le message
    bonsoir,
    le BLOB c'est comme in variant tu y stock du texte, du numérique ou du BLOB


    Nom : Sans titre.png
Affichages : 125
Taille : 262,5 Ko
    Ce n'est pas parce que le blob permet de stocker n'importe quoi que le faire est une bonne idée.

    Le blob est prévu pour stocker du binaire
    Utiliser un Blob pour stocker du scalaire, c'est s'imposer des contraintes et des temps de traitement dégradés pour rien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/08/2019, 08h54
  2. Comment créer une table sas pour gérer des queries
    Par arnaldo1974 dans le forum Administration et Installation
    Réponses: 1
    Dernier message: 02/12/2009, 14h39
  3. serveur gratuit pour stocker des données
    Par unix27 dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 21/03/2007, 11h57
  4. [9i] Créer une table temporaire pour correspondance
    Par gege2061 dans le forum Administration
    Réponses: 1
    Dernier message: 16/01/2007, 13h11
  5. Réponses: 10
    Dernier message: 02/11/2005, 11h12

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