2016-07-23 18 views
0

私は小さなVB.netアプリケーションを構築しています。私は少しデータベース(約5列、20レコード)を追加したい。私はすべてを1つのexeファイルに保存したい。 「フル」データベースを追加するのはちょっと残念だと思いますので、代わりの方法を探しています。 私はCSVファイルを作成し、それをリソースとして追加することができました。これはいいアイデアですか、それとも他に良い選択肢がありますか?vb.netアプリケーションにデータベースを埋め込む

+2

データをデータです。その性質上、変化する可能性があります。何かを埋め込むことは、変更された場合、アプリケーションを再コンパイルして再配布する必要があることを意味します。データがXMLにある場合は、データテーブルにデータをロードし、必要なときには置換えを送信できます。 – Plutonix

答えて

0

私は小さなデータベースとしてXMLファイルを使用しますが、linq(Language-Integrated Query)を使用してXMLファイルを簡単に検索できます。また、レコードとクエリの処理に役立つライブラリが組み込まれています。もちろん、あなたはアクセスを使用することができます、Excel(あなたはSQLでExcelクエリすることができます)CSVファイルまたはTXTファイル。また、作成することができますlocal data base file in visual studio

+0

または 'sql ce'データベース –

+0

...またはバイナリのシリアライズされたファイルです。 –

0

このような少量のデータの別のオプションは、ApplicationSettingsに格納することです。あなたの質問は、WinFormsを使用していることを意味するので、独自のカスタムクラスを格納するための作業量は少なく、組み込みの機能を利用することができます。

  1. データを表すクラスを作成します。
  2. (の)リストとしてApplicationSettingsBaseから継承別のクラスのプロパティにそのクラスをラップし、必要に応じて、このカスタム設定を操作し、必要に応じて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プロパティの属性にも注意してください。これは、アプリケーション設定(ユーザーが変更できない)とは対照的に、これをユーザー設定として識別します。

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 

フォーム定義:DefaultSettingAttributeは、アイテムを追加するには、最初の時間後までnull参照の例外を取得しないので、コレクションがインスタンス化されていることを確認できます。カスタム設定のインスタンス(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

関連する問題