2016-07-23 3 views
0

저는 작은 VB.net 응용 프로그램을 만들고 있습니다. 작은 데이터베이스 (약 5 열, 20 레코드)를 추가하고 싶습니다. 모든 것을 하나의 exe로 유지하고 싶습니다. '전체'데이터베이스를 추가하는 것은 다소 과잉이라고 생각하므로 대안을 찾고 있습니다. CSV 파일을 만들어서 리소스로 추가 할 수 있습니다. 이것은 좋은 생각입니까 아니면 다른 좋은 대안이 있습니까?vb.net 응용 프로그램에 데이터베이스 포함

+2

데이터가 데이터입니다. 그것의 특성상 그것은 바뀔 수 있습니다. Embedding을한다는 것은 변경된 경우 앱을 다시 컴파일하고 재배포해야한다는 것을 의미합니다. 데이터가 XML에 있으면 데이터 테이블에 데이터를로드하고 필요할 경우 대체 데이터를 보낼 수 있습니다. – Plutonix

답변

0

나는 작은 데이터베이스로 XML 파일을 사용하므로 linq (Language-Integrated Query)로 쉽게 쿼리 할 수 ​​있습니다. 또한 레코드 및 쿼리를 처리하는 데 도움이되는 라이브러리가 내장되어 있습니다. 물론 당신은 액세스를 사용할 수 있습니다, 엑셀 (당신은 SQL로 쿼리 할 수있는 엑셀) CSV 또는 TXT 파일. 또한 만들 수 있습니다 local data base file in visual studio

+0

또는'sql ce' 데이터베이스 –

+0

... 또는 이진 직렬화 된 파일. –

0

그런 작은 양의 데이터에 대한 또 다른 옵션은 ApplicationSettings에 저장하는 것입니다. 귀하의 질문은 당신이 WinForms를 사용하고 있음을 의미하므로, 자신 만의 맞춤 클래스를 저장하기 위해 적은 양의 작업으로 내장 기능을 사용할 수 있습니다.

  1. 데이터를 나타내는 클래스를 만듭니다.
  2. 필요에 따라이 사용자 지정 설정을 조작하고 필요에 따라 Save() 전화 (의) ​​목록으로 ApplicationSettingsBase에서 상속 다른 클래스의 속성에 해당 클래스를 랩. 데이터를 나타냅니다

    클래스 :

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

    응용 프로그램 설정에 저장된 모음으로 Fruit 변 클래스 다음

는 데이터 그리드에 결합하는 예이다. 그것은 ApplicationSettingsBase을 상속받습니다. 또한 속성의 속성을 응용 프로그램 설정 (사용자가 수정할 수 없음)과 반대되는 사용자 설정으로 식별합니다.

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

관련 문제