Dimanakah kita menyimpan setting koneksi supaya bisa lebih dinamis dan dapat disetting oleh user?

Aplikasi dengan framework .NET menyediakan fasilitas built in untuk menyimpan setting yang dapat diakses dan diatur saat runtime. Sehingga user dapat mengubah setting tanpa harus melakukan compile ulang aplikasi.

Untuk lebih jelas nya kita langsung saja buka Project Properties dengan cara klik menu Project -> [Nama Project] Properties.

Saat Project Properties terbuka klik tab Setting yang ada disisi kiri. Terdapat 4 kolom isian untuk masing-masing baris setting yaitu Name, Type, Scope, Value. Rani isikan setting-setting yang diperlukan untuk koneksi sebagai berikut:
Name merupakan nama dari setting yang nantinya dapat dipanggil dari code.
Type adalah tipe data untuk nilai yang diisikan.
Scope terdiri dari 2 jenis User dan Application. Scope Application bersifat readonly (hanya bisa dibaca) saat runtime sementara scope user readable dan writeble (bisa dibaca dan diganti). Karena disini kita ingin user dapat mengatur sendiri setting maka dipilihlah Scope User. Setting ini akan tersimpan pada level user account, karena itu jika user window login berbeda bisa memiliki setting berbeda pula.
Sementara value merupakan nilai default dari setting sebelum nanti user dapat mengubahnya.

Oke, lanjut.....
String koneksi adalah variable yang perlu diakses dari hampir seluruh bagian project karena itu mari kita buat variable-variable public yang disimpan dalam sebuah module.
Klik Project -> Add Module...
Pilih template Module, berinama (contoh: ModGlobalVar) kemudian klik Add.

Di dalam nya Rani simpan 4 variable untuk menyimpan nama server, user, password, dan nama database. Serta 1 buah variable string untuk menyimpan connection string lengkap.
Module ModGlobalVar

    Public dbServer As String
   
Public dbUser As String
   
Public dbPassword As String
   
Public dbName As String
   
Public sLocalConn As String

End Module


Kemudian kita buat juga sebuah sub procedure public untung memberikan nilai pada variable-variable tersebut yang diambil dari user setting. Bisa disimpan juga dalam module sehingga bisa dipanggil dimanapun dalam project saat diperlukan.
Public Sub GetDatabaseSetting()
    dbServer = My.Settings.dbServer
    dbUser =
My.Settings.dbUser
    dbPassword =
My.Settings.dbPassword
    dbName =
My.Settings.dbName
    sLocalConn = "server=" & dbServer & ";user id=" & dbUser & ";" & _
                 "password=" & dbPassword & ";database=" & dbName
End Sub


Sub GetDatabaseSetting dipanggil saat applikasi mulai dijalankan (misal nya saat form splash load). Tapi saat ini Rani fokus dulu ke form koneksi nya yah, jadi sub ini akan dipanggil pada load form koneksi.
Oiya kita tambahkan juga di module sebuah function untuk mengecek apakah setting database koneksi dapat terkoneksi sengan baik.
Public Function DatabaseConnected(Optional ByVal Server As String = "", _
           
Optional ByVal User As String = "", _
           
Optional ByVal Password As String = "", _
           
Optional ByVal DatabaseName As String = "") As Boolean
  Dim conn As MySqlConnection
  conn = New MySqlConnection()
  If Server = "" And User = "" And Password = "" And DatabaseName = "" Then
     conn.ConnectionString = sLocalConn
  Else
     conn.ConnectionString = "server=" & Server & ";user id=" & _

                             User & ";password=" & Password & _
                             ";database=" & DatabaseName
  End If
  Try

      conn.Open()
      conn.Close()
      Return True
  Catch myerror As MySqlException
      Return False
      MessageBox.Show("Error: " & myerror.Message)
  Finally
      conn.Dispose()
  End Try
  Return False
End Function


Nah ceritanya untuk mempercepat, kita bisa pakai template form dialog untuk membuat form ini:
Atur UI sebagai berikut:
Code:
Imports System.Windows.Forms

Public Class frmConnection

    Private Sub frmConnection_Load(ByVal sender As System.Object, _
                ByVal e As System.EventArgs) Handles MyBase.Load
        GetDatabaseSetting()
        txtDbServer.Text = dbServer
        txtDbUser.Text = dbUser
        txtDbPassword.Text = dbPassword
        txtDbName.Text = dbName
    End Sub

    Private Sub OK_Button_Click(ByVal sender As System.Object, _
                ByVal e As System.EventArgs) Handles OK_Button.Click
        If DatabaseConnected(txtDbServer.Text, txtDbUser.Text, _
                             txtDbPassword.Text, txtDbName.Text) = True Then
            With My.Settings
                .dbServer = txtDbServer.Text
                .dbUser = txtDbUser.Text
                .dbPassword = txtDbPassword.Text
                .dbName = txtDbName.Text
                .Save()
            End With
            GetDatabaseSetting()
            Me.DialogResult = System.Windows.Forms.DialogResult.OK
            Me.Close()
        End If
    End Sub


    Private Sub Cancel_Button_Click(
ByVal sender As System.Object, _
                ByVal e As System.EventArgs) Handles
Cancel_Button.Click
        Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
        Me.Close()
    End Sub

End Class

Pada event OK_Button_Click kita bisa melihat bagaimana cara mengubah nilai setting.
Sekian, selamat mencoba


Click here if you like this article.