Senin, 14 September 2020

Vb.Net: Menyimpan Setting Koneksi Di User Setting


Dimanakah kita menyimpan setting koneksi agar mampu lebih dinamis dan dapat disetting oleh user?

Aplikasi dengan framework .NET menyediakan akomodasi built in untuk menyimpan setting yang dapat diakses dan diatur saat runtime. Sehingga user dapat mengganti 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 yakni Name, Type, Scope, Value. Rani isikan setting-setting yang diperlukan untuk koneksi selaku berikut:
Name merupakan nama dari setting yang nantinya mampu diundang dari code.
Type ialah tipe data untuk nilai yang diisikan.
Scope terdiri dari 2 jenis User dan Application. Scope Application bersifat readonly (cuma mampu dibaca) dikala runtime sementara scope user readable dan writeble (bisa dibaca dan diganti). Karena disini kita ingin user mampu mengontrol sendiri setting maka dipilihlah Scope User. Setting ini akan tersimpan pada level user account, alasannya adalah itu kalau user window login berbeda bisa memiliki setting berlainan pula.
Sementara value merupakan nilai default dari setting sebelum nanti user mampu menggantinya.

Oke, lanjut.....
String koneksi ialah variable yang perlu diakses dari hampir seluruh bagian project alasannya itu mari kita buat variable-variable public yang disimpan dalam sebuah module.
Klik Project -> Add Module...
Pilih template Module, berinama (acuan: ModGlobalVar) lalu 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 menawarkan nilai pada variable-variable tersebut yang diambil dari user setting. Bisa disimpan juga dalam module sehingga bisa diundang dimanapun dalam project dikala dibutuhkan.
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 diundang saat applikasi mulai dilaksanakan (misal nya saat form splash load). Tapi ketika ini Rani konsentrasi dahulu 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 mampu pakai template form obrolan 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 mampu melihat bagaimana cara mengganti nilai setting.
Sekian, selamat menjajal


Click here if you like this article.



Sumber http://rani-irsan.blogspot.com


EmoticonEmoticon