2016-07-23 14 views
0

Ich baue eine kleine VB.net App. Ich möchte eine kleine Datenbank hinzufügen (ungefähr 5 Spalten, 20 Datensätze). Ich möchte alles in einer einzigen exe behalten. Ich denke, es ist ein wenig übertrieben, eine "vollständige" Datenbank hinzuzufügen, also suche ich nach einer Alternative. Ich könnte eine CSV-Datei erstellen und sie als Ressource hinzufügen. Ist das eine gute Idee, oder gibt es noch andere bessere Alternativen?Embed Datenbank in vb.net App

+2

Daten Daten ist. Von Natur aus kann es sich ändern. Wenn Sie etwas einbetten, bedeutet dies, dass Sie die App neu kompilieren und neu verteilen müssen. Wenn die Daten in einer XML-Datei vorliegen, können Sie sie in eine Datentabelle laden und bei Bedarf Ersatzdaten senden. – Plutonix

Antwort

0

Ich würde XML-Datei als kleine Datenbank verwenden, können Sie es leicht mit Linq (Language-Integrated Query) abfragen. Es gibt auch eingebaute Bibliotheken, die Ihnen beim Umgang mit Datensätzen und Abfragen helfen können. natürlich, dass Sie Zugriff verwenden können, Excel (Sie können Excel mit SQL abfragen) CSV oder TXT-Datei. Sie können auch eine local data base file in visual studio

+0

oder 'sql ce' Datenbank –

+0

... oder eine binäre serialisierte Datei. –

0

erstellen Eine weitere Option für eine so kleine Menge von Daten ist es in ApplicationSettings zu speichern. Ihre Frage impliziert, dass Sie WinForms verwenden, sodass Sie die integrierten Funktionen mit nur geringem Aufwand nutzen können, um Ihre eigene benutzerdefinierte Klasse zu speichern.

  1. Erstellen Sie eine Klasse zur Darstellung Ihrer Daten.
  2. Wickeln Sie diese Klasse in einer Eigenschaft einer anderen Klasse, die von ApplicationSettingsBase als List (Of)
  3. Manipulieren dieser individuellen Einstellung je nach Bedarf und rufen Save() nach Bedarf erbt.

Hier ist ein Beispiel, das an ein Datagrid bindet:

Die Klasse, die Ihre Daten darstellt:

Public Class Fruit 
    Public Property FruitName As String 
    Public Property FruitColor As String 
    Public Property FruitGrowsOn As String 
End Class 

Die Klasse, die Fruit in einer Sammlung in Anwendungseinstellungen gespeichert dreht. Beachten Sie, dass es ApplicationSettingsBase erbt. Beachten Sie auch die Attribute in der Eigenschaft Fruits, die dies als Benutzereinstellung im Gegensatz zu einer Anwendungseinstellung (die vom Benutzer nicht geändert werden kann) angeben. Die DefaultSettingAttribute stellt sicher, dass die Sammlung instanziiert wird, so dass Sie erst nach dem ersten Mal Ausnahme Nullverweis erhalten fügen Sie einen Artikel aus:

Imports System.Configuration 

Public NotInheritable Class FruitCollection 
    Inherits ApplicationSettingsBase 

    <UserScopedSettingAttribute()> 
    <DefaultSettingValue("")> 
    Public Property Fruits() As List(Of Fruit) 
     Get 
      Fruits = Me("Fruits") 
     End Get 
     Set(ByVal value As List(Of Fruit)) 
      Me("Fruits") = value 
     End Set 
    End Property 
End Class 

die Formulardefinition. Ruft die Instanz Ihrer benutzerdefinierten Einstellung ab (FruitUserSettings), erstellt eine Bindungsquelle für ein DataGridView und bietet eine Schaltfläche zum Speichern, um die im Raster vorgenommenen Änderungen in den Einstellungen beizubehalten. Das nächste Mal öffnet der Benutzer das Formular die Änderungen noch da sein wird, vorausgesetzt, dass sie auf die Schaltfläche Speichern geklickt haben:

Public Class Form1 

    Dim FruitUserSettings As FruitCollection 
    Dim GridBindingSrc As BindingSource 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

     FruitUserSettings = New FruitCollection() 

     GridBindingSrc = New BindingSource(FruitUserSettings, "Fruits") 

     DataGridView1.AutoGenerateColumns = True 
     DataGridView1.DataSource = GridBindingSrc 

    End Sub 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     FruitUserSettings.Save() 
    End Sub 

    Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing 
     GridBindingSrc.Dispose() 
    End Sub 
End Class 

Hinweis, Sie keine Bindungsquelle oder Gitter benötigen, das waren nur zur Demonstration. Sie können FruitUserSettings.Fruits wie jede andere Liste beliebig manipulieren. Solange Save() an den Einstellungen aufgerufen wird, behalten Sie die Daten bei.

Sie können die Arbeitsprobe hier herunterladen/klonen: https://github.com/crowcoder/CustomSetting

enter image description here