在vb.net应用程序中嵌入数据库

时间:2016-07-23 17:17:37

标签: vb.net visual-studio

我正在构建一个小型的VB.net应用程序。我想添加一个小数据库(大约5列,20条记录)。我希望将所有内容保存在单个exe中。我认为添加一个“完整”数据库有点过分,所以我正在寻找替代方案。 我可以创建一个CSV文件,并将其添加为资源。这是一个好主意,还是有其他更好的选择?

2 个答案:

答案 0 :(得分:1)

此类少量数据的另一个选项是将其存储在ApplicationSettings中。您的问题意味着您使用的是WinForms,因此只需少量工作就可以使用内置功能来存储您自己的自定义类。

  1. 创建一个表示数据的类。
  2. 将该类包含在继承自ApplicationSettingsBase的另一个类的属性中作为List(Of)
  3. 根据需要操作此自定义设置,并根据需要调用Save()
  4. 以下是绑定到DataGrid的示例:

    代表您数据的类:

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

    Fruit转换为存储在应用程序设置中的集合的类。请注意,它继承了ApplicationSettingsBase。另请注意Fruits属性上的属性,这些属性将此标识为用户设置,而不是应用程序设置(用户无法修改)。 DefaultSettingAttribute确保集合被实例化,因此在第一次添加项目之前,您不会获得空引用异常:

    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
    

    表单定义。检索自定义设置的实例(FruitUserSettings),为DataGridView创建绑定源,并提供“保存”按钮以将网格中所做的更改保留为“设置”。下次用户打开表单时,如果他们单击“保存”按钮,则更改仍将存在:

    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
    

    注意,您不需要绑定源或网格,这些仅用于演示。您可以以任何方式操纵FruitUserSettings.Fruits,就像任何其他列表一样。只要在设置中调用Save(),您就会保留数据。

    您可以在此处下载/克隆工作示例:https://github.com/crowcoder/CustomSetting

    enter image description here

答案 1 :(得分:0)

我会将XML文件用作小数据库,您可以使用linq(语言集成查询)轻松查询。还有内置的库,可以帮助您处理记录和查询。当然你可以使用access,excel(你可以用SQL查询excel)csv或txt文件。您也可以创建local data base file in visual studio