我正在构建一个小型的VB.net应用程序。我想添加一个小数据库(大约5列,20条记录)。我希望将所有内容保存在单个exe中。我认为添加一个“完整”数据库有点过分,所以我正在寻找替代方案。 我可以创建一个CSV文件,并将其添加为资源。这是一个好主意,还是有其他更好的选择?
答案 0 :(得分:1)
此类少量数据的另一个选项是将其存储在ApplicationSettings中。您的问题意味着您使用的是WinForms,因此只需少量工作就可以使用内置功能来存储您自己的自定义类。
ApplicationSettingsBase
的另一个类的属性中作为List(Of)Save()
。以下是绑定到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
答案 1 :(得分:0)
我会将XML文件用作小数据库,您可以使用linq(语言集成查询)轻松查询。还有内置的库,可以帮助您处理记录和查询。当然你可以使用access,excel(你可以用SQL查询excel)csv或txt文件。您也可以创建local data base file in visual studio