Wednesday, February 27, 2013

Sharing Everything From My Experience And Knowlegde

Sharing Everything From My Experience And Knowlegde


Perbedaan ADODB VB6 dan SQLClient, OLEDB, ODBC di VBNET (PART II)

Posted: 26 Feb 2013 09:56 PM PST

Sesuai janji saya, ini pembahasan Part II, jika anda belum membaca Part I silahkan baca terlebih dahulu. Nah saya akan menjelaskan lagi beberapa perbedaan ADODB VB6 dan VBNET, coba simak beberapa point berikut ini:
1.ADODB di VB6
Pada dasarnya ada 2 class yang sering (umum) digunakan, yaitu : Connection dan Recordset. Contoh :
Dim con As New ADODB.Connection
Dim rec As New ADODB.Recordset

2.SQLClient , OLEDD, ODBC di VBNET
Pada dasarnya ketika provider data tersebut sama saja, yang beda adalah dari connection string nya saja seperti saya telah jelaskan di Part I. Class yang sering (umum) digunakan biasanya ada 5 yaitu : Command, Connection, DataAdapter, DataReader, Transaction. Contoh :
    Dim cmd As New [SqlClient/OleDb/Odbc].[SqlClient/OleDb/Odbc]Command
    Dim con As New [SqlClient/OleDb/Odbc].[SqlClient/OleDb/Odbc]Connection
    Dim adp As New [SqlClient/OleDb/Odbc].[SqlClient/OleDb/Odbc]DataAdapter
    Dim dread As New [SqlClient/OleDb/Odbc].[SqlClient/OleDb/Odbc]DataReader
    Dim trans As New [SqlClient/OleDb/Odbc].[SqlClient/OleDb/Odbc]Transaction
Maksudnya [SqlClient/OleDb/Odbc] adalah anda dapat gunakan salah satu, bisa SqlClient atau OleDb
atau Odbc. Ok, setelah kita tahu perbedaan dasarnya, mari kita pelajari perbedaan pola/cara penulisan sintak nya, contoh beberapa sintak yang sering (umum) dilakukan adalah :

1.Connection
Untuk connection sudah saya contohkan di Part I

2.Execute (Insert, Update, Delete, Create, Drop, Alter, dan lain lain)
Jika di VB6 anda biasa menulis sintak seperti ini :
    con.Execute "INSERT INTO TBL1 VALUES ('01','pandjie')"
    con.Execute "DROP TABLE TBL1"

Jika di VBNET anda bisa menulisnya seperti ini :
    Dim cmd As New SqlClient.SqlCommand
    With cmd
        .CommandText = "INSERT INTO TBL1 VALUES ('01','pandjie')"
        .Connection = Con
        .ExecuteNonQuery()
        .Dispose
    End With

   'atau
    Dim cmd As New SqlClient.SqlCommand("INSERT INTO TBL1 VALUES ('01','pandjie')", Con)
    cmd.ExecuteNonQuery()
    cmd.Dispose

    'atau
    Dim cmd As New SqlClient.SqlCommand With {.CommandText = "INSERT INTO TBL1 VALUES ('01','pandjie')", .Connection = con}
    cmd.ExecuteNonQuery()
    cmd.Dispose

    'atau
    Using cmd As New SqlClient.SqlCommand("INSERT INTO TBL1 VALUES ('01','pandjie')", con)
        cmd.ExecuteNonQuery()
    End Using
Dan masih banyak lagi caranya/kombinasi penulisan sintaknya

3.Select Query/Data
Jika di VB6 anda biasa menulis sintak seperti ini :
    Dim rec As New ADODB.Recordset
    rec.Open "SELECT * FROM TBL1 WHERE NIK='99'", con, adOpenDynamic, adLockOptimistic
    If rec.EOF = True Or rec.BOF = True Then
        MsgBox "DATA TIDAK DITEMUKAN"
        'jika data kosong
    Else
        MsgBox rec.Fields("NAME").Value
        'jika data ditemukan
    End If
    rec.Close

    'atau contoh looping
    Set rec = con.Execute("SELECT * FROM TBL1")
    Do While rec.EOF = False
        'sintak anda
        rec.MoveNext
    Loop
    rec.Close

Jika di VBNET, pada umumnya ada dua metode, satu menggunakan DataReader dan yang kedua menggunakan DataAdapter. DataReader itu seperti RecordSet VB6 sedangkan DataAdapter itu adalah alat untuk mengolah query dan hasilnya akan di-set (biasanya) ke object DataTable, jadi untuk select Field dan looping nya bukan ke DataAdapter tetapi ke DataTable. contoh :
3.1 DataReader
    Dim cmd As New SqlClient.SqlCommand("SELECT * FROM TBL1 WHERE NIK='99'", con)
    Dim dread As SqlClient.SqlDataReader = cmd.ExecuteReader
    If dread.HasRows = False Then 'jika di VB6 = EOF atau BOF
        MsgBox("DATA TIDAK DITEMUKAN")
        'jika data kosong
    Else
        dread.Read() 'read untuk membaca record (.movenext jika di VB6)
        MsgBox(dread.Item("NAME").ToString)
        'jika data ditemukan
    End If
    dread.Close() 'closeReader
    cmd.Dispose() 'loseCommand
   
    'atau
    Using cmd As New SqlClient.SqlCommand("SELECT * FROM TBL1 WHERE NIK='99'", con)
    Using dread As SqlClient.SqlDataReader = cmd.ExecuteReader
        If dread.Read = False Then 'langsung .read sebagai validasi
            MsgBox("DATA TIDAK DITEMUKAN")
            'jika data kosong
        Else 'tidak perlu .read lagi karena sudah diatas
            MsgBox(dread.Item("NAME").ToString)
            'jika data ditemukan
        End If
    End Using '=Close DataReader
    End Using '=Close Command
   
    'atau contoh looping
    Using cmd As New SqlClient.SqlCommand("SELECT * FROM TBL1", con)
    Using dread As SqlClient.SqlDataReader = cmd.ExecuteReader
        Do While dread.Read
            'sintak anda
        Loop
    End Using
    End Using

3.2 Data Adapter
    Dim cmd As New SqlClient.SqlCommand("SELECT * FROM TBL1 WHERE NIK='99'", con)
    Dim adp As New SqlClient.SqlDataAdapter(cmd)
    Dim tbl As New DataTable
    adp.Fill(tbl)
    If tbl.Rows.Count = 0 Then
        MsgBox("DATA TIDAK DITEMUKAN")
        'jika data kosong
    Else
        MsgBox(tbl.Rows(0).Item("NAME").ToString)
        'jika data ditemukan
    End If
   
    'atau
    Dim tbl As New DataTable
    Using adp As New SqlClient.SqlDataAdapter("SELECT * FROM TBL1 WHERE NIK='99'", con)
        adp.Fill(tbl)
        If tbl.Rows.Count = 0 Then
            MsgBox("DATA TIDAK DITEMUKAN")
            'jika data kosong
        Else
            MsgBox(tbl.Rows(0).Item("NAME").ToString)
            'jika data ditemukan
        End If
    End Using
   
    'atau contoh looping
    Dim adp As New SqlClient.SqlDataAdapter("SELECT * FROM TBL1 WHERE NIK='99'", con)
    Dim tbl As New DataTable
    adp.Fill(tbl)
    For Each myRow As DataRow In tbl.Rows
        'sintak anda
    Next

    'atau
    Dim tbl As New DataTable
    Using adp As New SqlClient.SqlDataAdapter("SELECT * FROM TBL1 WHERE NIK='99'", con)
        adp.Fill(tbl)
        For i As Integer = 0 To tbl.Rows.Count - 1
            'sintak anda
        Next
    End Using

Jadi sebenarnya banyak sekali cara/kombinasi di VBNET, contoh saya diatas hanya sebagian cara saja, anda boleh menggunakan berbagai cara/kombinasi menulis sintak VBNET yang menurut anda paling mudah, singkat dan mudah diingat/difahami.

Tags:
cara menggunakan data reader vbnet   , cara menggunakan data adapter vbnet, command builder vbnet, tips dan trik vbnet, belajar vbnet dari 0 nol, cara select data dari datareader vbnet, 

No comments:

Post a Comment