jump to navigation

Mengakses Database dengan DAO (Insert, update, delete) Wed - Mar 13, 2002

Posted by supriyatna in Programming, Windows.
Tags: , , , , , ,
add a comment

Kebanyakan pengembang akan menggunakan Visual Basic sebagai pemanipulasi dan pengolah data (Front End) sehingga data yang disimpan dapat dimanfaatkan untuk berbagai keperluan. Ini bukan berarti VB tidak dapat melakukan hal pekerjaan lainnya. Ya! Mungkin dengan alasan klasik bahwa setiap kegiatan yang berhubungan dengan manusia tidak terlepas dari deretan informasi yang membutuhkan pengolahan secara efisien dan akurat. Sehingga dari sekian banyak kemampuan yang ada hampir kebanyakan programmer akan selalu berurusan dengan Database. Disini tidak akan dijelaskan apa dan bagaimana suatu konsep Database. Saya menganggapnya anda yang sedang membaca artikel ini, sudah memahami, minimal pernah membacanya (;-(.

Sejauh yang saya ketahui, Visual Basic telah menyiapkan 3 macam cara pengaksesan kedalam database, yaitu DAO, RDO, dan ADO. Masing-masing secara singkat akan saya jelaskan sebagi berikut:

  • DAO, (Data Access Object). Pada umumnya digunakan untuk database Desktop, maksudnya?. Ya! hanya dapat mengakses Database desktop atau sering dikenal juga dengan istilah Single Database, standalone Database, Local Database. Contohnya adalah .DBF, Ms. Access (.MDB), Paradox. Kalaupun tetap menggunakan ODBC, dan database-nya diletakan pada server kemudian diakses melalui client tetap saja penggunaannya hanya bersifat Sharing database.
  • RDO, (Remote Data Object). Berbeda dengan DAO, secara khusus RDO digunakan untuk mengelola database Server secara remote. Contoh dari database Server adalah, SQL Server, MySQL, Oracle, InterBase (Biasanya include pada installasi Delphi). Walaupun RDO digunakan untuk mengakses Database Server bukan berarti RDO tidak dapat mengakses Database desktop. Kenyataannya adalah Database Desktop masih dapat diakses dengan bantuan ODBC. Secara “urakan” dengan tujuan untuk mempermudah pengenalan RDO khususnya untuk yang sudah terbiasa dengan DAO. Saya lebih sering menyamakan bahwa Object Database (DAO) digantikan dengan Object Connection (RDO) dan Object Recordset digantikan dengan Resultset. Walaupun sesungguhnya bukan sekedar dari pengalihan nama saja, namun lebih dari itu. (Informasi!!: Pada DAO, Object Connection dapat digunakan apabila Workspace yang dibuat dengan menggunakan Option dbUseODBC).
  • ADO, (ActiveX Data Object). Jika Local Database dapat diakses dengan menggunakan DAO, dan Database server dengan menggunakan RDO lalu untuk apa lagi dibuat ADO, apa programmer Microsoft sudah kurang kerjaan?. 😉 *smile*, no! dari masing-masing kegunaan yang ada pada ADO dan RDO, pada perkembangan selanjutnya, ternyata masih ada yang tidak dapat dilakukan oleh keduanya. Yaitu tidak dapat dipakai pada saat membangun Web-application (Internet application). ADO memperbolehkan Client Application untuk mengakses Database Server dengan melalui Provide OLE DB, sehingga memungkinkan untuk membangun aplikasi Client/Server dan Web Application.

Sekarang saatnya untuk membahas manipulasi database. Dalam “kerajaan database” Pengakses database secara umum terdiri dari INSERT, UPDATE dan DELETE, Penambahan, perubahan, serta penghapusan Data. Ketiganya akan dipakai dan akan kita bawa kemanapun kita pergi, baik dengan database ataupun bahasa pemrograman apapun. Untuk contoh kali ini seluruh proses dilakukan tidak dengan menggunkan SQL statement tetapi dengan memanfaatkan property dan Method yang ada pada object Recordset. Walaupun masih terdapat cara lain yaitu dengan menggunakan SQL Statement.

1. Menambah Data kedalam Database.

a. Siapkan tempat untuk menyimpan informasi.
b. Simpan informasi kedalam tempat yg sudah disiapkan sebelumnya.
c. Simpan secara permanent informasi tersebut kedalam suatu media.

' Contoh langsung proses tersebut diatas
' pada Visual Basic adalah
' Sebagai berikut:
rs.AddNew                        ' Langkah (a)
rs.Fields("NAMA") = txtNama.Text ' Langkah (b)
rs.Update                        ' Langkah (c)

2. Merubah informasi pada Database

a. Tentukan informasi yg akan dirubah.
b. Simpan informasi baru untuk menggantikan informasi yang lama.
c. Simpan secara permanent informasi tersebut kedalam suatu media.

' Syntak pada Visual Basic untuk memperbaharui data
rs.FindFirst "NAMA='" & txtNama.Text & "' " 'Langkah (a)
'
If rs.NoMatch Then
  MsgBox "Record tidak ditemukan!",vbCritical, "Error"
Else
  rs.Edit                          ' Langkah (a)
  '
  rs.Fields("NAMA") = txtNama.Text ' Langkah (b)
  rs.Update                        ' Langkah (c)
  MsgBox "Record telah diperbaharui", _
    vbInformation, "Informasi"
End If

3. Menghapus data pada Database

Proses ini adalah yang paling mudah, semudah kita menghancurkan sesuatu yang sudah kita buat dengan sudah payah, *smile*.

a. Tentukan informasi/record yang akan dihapus
b. Hapus secara permanent

' Proses diatas terlihat pada potongan program dibawah!
rs.FindFirst "NAMA='" & txtNama.Text & "'" ' Langkah (a)
'
If rs.NoMatch Then
  '
  MsgBox "Nama tersebut tidak ditemukan", _
    vbExclamation, "Error"
Else
  If MsgBox("Hapus record?", vbQuestion + _
    vbYesNo, "Konfirmasi") = vbYes Then
    '
    rs.Delete ' Langkah (b)
  End If
End If

Sedangkan program lengkap untuk contoh penggunaaan DAO terlihat pada listing dibawah. Adapun control-control yang digunakan pada Contoh dibawah adalah sebagai berikut:

  • ImageList1 : Untuk menyimpan Icon-icon yang digunakan pada ToolBar. Ingat~! Setiap icon ditentukan key-nya sesuai dengan fungsinya masing-masing karena ImageList ini akan digunakan pada Toolbar.
  • Image1 : Untuk menampilkan Banner, dimana Gambar yg digunakan berasal dari file Resourse (.RES).
  • ToolBar1 : Untuk menampilkan tombol-tombol operasi.
  • StatusBar1
  • Timer, TextBox, ComboBox, CheckBox serta Frame.
Option Explicit
Dim db As Database           ' Siapkan Object Database
Dim rs As Recordset          ' Siapkan Object Recordset
Dim rsImmediate As Recordset
Dim inOperation As String    ' Menentukan Modus Operasi
Dim nFlip As Byte            ' Untuk Animasi Banner
Dim gsGuest_Id As String     ' Varibel General ( berlaku
                             ' di form ini saja )

' Inisialiasi Form pada saat diload.
Private Sub InitForm()
  cbValid.Value = vbChecked
  cboGender.AddItem "Laki-laki"
  cboGender.AddItem "Perempuan"
  DB_Retrieve rs("GUEST_ID")
  Frame1.Enabled = False
End Sub

Private Sub Form_Load()
Dim strPathDB As String
Dim oPanel As Panel
  strPathDB = IIf(Right(App.Path, 1) <> "\", _
    App.Path & "\", App.Path) & _
    "datatamu.mdb"
  '
  Set db = DBEngine.OpenDatabase(strPathDB)
  Set rs = db.OpenRecordset("GUESTBOOK", dbOpenDynaset)

  nFlip = 0   ' Set animasi Banner
  Call InitForm

  With Toolbar1
    .ImageList = ImageList1
    .Buttons.Add .Buttons.Count + 1, "batas1", _
        , tbrSeparator
    .Buttons.Add .Buttons.Count + 1, "tambah", _
        , tbrDefault, "tambah"
    ' Parameter ke 4 digunakan untuk menentukan
    ' icon yang digunakan
    ' pada toolbar1 yang berasal dari ImageList1

    .Buttons(.Buttons.Count).ToolTipText = "Tambah data"
    '
    .Buttons.Add .Buttons.Count + 1, "ubah", , _
        tbrDefault, "ubah"
    .Buttons(.Buttons.Count).ToolTipText = "Ubah data"
    '
    .Buttons.Add .Buttons.Count + 1, "hapus", , _
        tbrDefault, "hapus"
    .Buttons(.Buttons.Count).ToolTipText = "Hapus"
    '
    .Buttons.Add .Buttons.Count + 1, "simpan", , _
        tbrDefault, "simpan"
    .Buttons(.Buttons.Count).ToolTipText = "Simpan"
    '
    .Buttons.Add .Buttons.Count + 1, "batas2", , _
        tbrSeparator
    .Buttons.Add .Buttons.Count + 1, "cancel", , _
        tbrDefault, "refresh"
    .Buttons(.Buttons.Count).ToolTipText = "Batal"
    '
    .Buttons.Add .Buttons.Count + 1, "batas3", , _
        tbrSeparator
    .Buttons.Add .Buttons.Count + 1, "keluar", , _
        tbrDefault, "keluar"
    .Buttons(.Buttons.Count).ToolTipText = _
        "Keluar dari program"
    '
    .Buttons.Add .Buttons.Count + 1, "batas4", , _
        tbrSeparator
    .Buttons.Add .Buttons.Count + 1, "first", , _
        tbrDefault, "first"
    .Buttons(.Buttons.Count).ToolTipText = _
        "Ke record pertama"
    '
    .Buttons.Add .Buttons.Count + 1, "previous", , _
        tbrDefault, "previous"
    .Buttons(.Buttons.Count).ToolTipText = _
        "Ke record sebelumnya"
    '
    .Buttons.Add .Buttons.Count + 1, "next", , _
        tbrDefault, "next"
    .Buttons(.Buttons.Count).ToolTipText = _
        "Ke record selanjutnya"
    '
    .Buttons.Add .Buttons.Count + 1, "last", , _
        tbrDefault, "last"
    .Buttons(.Buttons.Count).ToolTipText = _
        "Ke record terakhir"
    '
  End With

End Sub

Private Sub Form_Resize()
  StatusBar1.Panels(1).Width = Me.ScaleWidth
End Sub

Private Sub Timer1_Timer()
  nFlip = nFlip + 1
  ' Banner yang ditampilkan berasal dari File resource
  Image1.Picture = LoadResPicture(100 + nFlip, _
    vbResBitmap)
  If nFlip >= 7 Then
    nFlip = 0
  End If
End Sub

Private Sub Toolbar1_ButtonClick(ByVal Button As _
  MSComctlLib.Button)
Dim strGuest_Id As String
  Select Case Button.Key
    Case "tambah"
      '
      inOperation = "tambah"
      Toolbar1.Buttons("ubah").Enabled = False
      Toolbar1.Buttons("hapus").Enabled = False
      Frame1.Enabled = True
      Call DB_Blank
      txtGuest_ID = "**"
      '
    Case "ubah"
      Toolbar1.Buttons("tambah").Enabled = False
      Toolbar1.Buttons("ubah").Enabled = False
      inOperation = "ubah"
      Frame1.Enabled = True
      DB_Retrieve gsGuest_Id
    Case "cari"
      '
      strGuest_Id = InputBox( _
        "Masukan Guest ID yang " & _
        "akan di Edit?", "Kriteria")
      If strGuest_Id <> "" Then
        Toolbar1.Buttons("tambah").Enabled = False
        Toolbar1.Buttons("ubah").Enabled = False
        inOperation = "ubah"
        DB_Retrieve strGuest_Id
      End If
    Case "simpan"
      If inOperation = "tambah" Then
        '
        Call DB_Tambah
        Frame1.Enabled = False
        '
      ElseIf inOperation = "ubah" Then
        '
        If DB_Ubah Then
          Frame1.Enabled = False
        End If
      Else
        MsgBox "Please press Add button, " & _
            "Or Modify Button " & _
            vbCrLf & _
          "then you can save entire data", _
          vbExclamation, "Error"
        '
      End If
    Case "hapus"
      If inOperation = "ubah" And _
      txtGuest_ID.Text <> "" Then
        If MsgBox("Anda ingin menghapus " & _
          "Record dengan " &  _
          "Guest ID : " & _
          txtGuest_ID.Text & "?", _
          vbQuestion + vbYesNo, _
            "Konfirmasi") = vbYes Then
          '
          rs.Delete
          Call DB_Blank
          StatusBar1.Panels(1).Text = _
            "Record(s) deleted"
          Call DB_Cancel
        End If
      End If
    Case "cancel"
      Call DB_Cancel
    Case "keluar"
      Unload Me
      End ' Make sure all Object has
          ' been release from Memory

    ' Navigator Button Pressed!!!
    Case "first", "previous"
      '
      If inOperation = "ubah" Then
        If MsgBox("Cancel update data?", _
          vbYesNo + vbQuestion, _
          "Confirmation") = vbYes Then
          Call DB_Cancel
          '
        End If
      End If
      If Button.Key = "first" Then
        rs.MoveFirst
      Else
        rs.MovePrevious
      End If

      If rs.BOF Then
        rs.MoveFirst
      End If

      DB_Retrieve rs("GUEST_ID")
      '
    Case "next", "last"
      '
      If Button.Key = "next" Then
        rs.MoveNext
      Else
        rs.MoveLast
      End If
      If rs.EOF Then
        rs.MoveLast
      End If
      DB_Retrieve rs("GUEST_ID")
      Call DB_Cancel
      '
  End Select
End Sub
' Fungsi General
' --------------
Private Sub DB_Tambah()
Dim strLastRec As String

  If Not IsNull(txtTgl_Lahir.Text) Then
    If Not IsDate(txtTgl_Lahir.Text) Then
      MsgBox "Invalid Format Date", _
             vbExclamation, "Warning"
      txtTgl_Lahir.SetFocus
      Exit Sub
    End If
  End If

 ' Proses untuk Membuat Running Number, Auto Number
 ' Yaitu dengan men-select MAX field GUEST_ID
 ' kemudian ditambahkan
 ' dengan 1.
  Set rsImmediate = db.OpenRecordset( _
    " SELECT MAX(VAL(GUEST_ID))" & _
    " AS LAST_REC FROM GUESTBOOK", dbOpenDynaset)
  strLastRec = rsImmediate("LAST_REC")
  strLastRec = Format(Val(strLastRec) + 1, "00")
  rsImmediate.Close
  Set rsImmediate = Nothing

  rs.AddNew
  rs("GUEST_ID") = strLastRec
  rs("NAMA") = txtNama.Text
  rs("TGL_LAHIR") = txtTgl_Lahir.Text
  rs("TELEPON") = txtTelepon.Text
  rs("EMAIL") = txtEmail.Text
  rs("GENDER") = IIf(cboGender.ListIndex = 0, "L", "P")
  rs("KOMENTAR") = txtKomentar.Text
  rs("VALID") = IIf(cbValid.Value = vbChecked, "Y", "N")
  rs.Update
  '
  Toolbar1.Buttons("tambah").Enabled = True
  Toolbar1.Buttons("ubah").Enabled = True
  Toolbar1.Buttons("hapus").Enabled = True
  '
  DB_Retrieve strLastRec
  inOperation = ""
  '
End Sub

Private Function DB_Ubah() As Boolean
Dim strLastRec As String
  DB_Ubah = False
  '
  If Len(Trim(txtTgl_Lahir.Text)) = 0 Then
    MsgBox "Tanggal Lahir tidak boleh kosong!", _
        vbExclamation, "Peringatan"
    Exit Function
  Else
    If Not IsDate(txtTgl_Lahir.Text) Then
      MsgBox "Invalid Format Date", _
             vbExclamation, "Warning"
      txtTgl_Lahir.SetFocus
      Exit Function
    End If
  End If
  '
  rs.Edit
  rs("NAMA") = txtNama.Text
  rs("TGL_LAHIR") = txtTgl_Lahir.Text
  rs("TELEPON") = txtTelepon.Text
  rs("EMAIL") = txtEmail.Text
  rs("GENDER") = IIf(cboGender.ListIndex = 0, "L", "P")
  rs("KOMENTAR") = txtKomentar.Text
  rs("VALID") = IIf(cbValid.Value = vbChecked, "Y", "N")
  rs.Update
  '
  Toolbar1.Buttons("tambah").Enabled = True
  Toolbar1.Buttons("ubah").Enabled = True
  Toolbar1.Buttons("hapus").Enabled = True
  '
  DB_Retrieve txtGuest_ID.Text
  inOperation = ""
  DB_Ubah = True
  '
End Function

Private Sub DB_Retrieve(strIDRec As String)
Dim strSQL As String

  rs.FindFirst "GUEST_ID='" & strIDRec & "' "
  txtGuest_ID.Text = rs("GUEST_ID")
  gsGuest_Id = txtGuest_ID.Text
  txtNama.Text = rs("NAMA")

' Apabila field yang akan ditampilkan kedalam Control
' (contoh: TextBox) ternyata NULL, hal ini akan
' menyebabkan error, Oleh karena itu sebelum
' dimasukan kedalam Control, nilai pada field harus
' dicek terlebih dahulu. Saya biasanya menggunakan
' fungsi IsNull() yang digabung dengan penggunaan fungsi
' IIf( logikaExpression, ExpresiTrue, ExpresiFalse
' atau dgn menambahkan Empty String [rs("FIELD") & ""]

  txtTgl_Lahir.Text = IIf(IsNull(rs("TGL_LAHIR")), _
    "", rs("TGL_LAHIR"))
  txtTelepon.Text = IIf(IsNull(rs("TELEPON")), _
    "", rs("TELEPON"))
  txtEmail.Text = IIf(IsNull(rs("EMAIL")), _
    "", rs("EMAIL"))
  cboGender.ListIndex = IIf(rs("GENDER") = "L", 0, 1)
  txtKomentar.Text = rs("KOMENTAR")
  cbValid.Value = IIf(rs("VALID") = "Y", _
    vbChecked, vbUnchecked)
  '
End Sub

Private Sub DB_Cancel()
  '
  inOperation = ""
  Toolbar1.Buttons("tambah").Enabled = True
  Toolbar1.Buttons("ubah").Enabled = True
  Toolbar1.Buttons("hapus").Enabled = True
  Frame1.Enabled = False
  DB_Retrieve gsGuest_Id
  '
End Sub

Private Sub DB_Blank()
Dim strSQL As String
  txtGuest_ID.Text = ""
  txtNama.Text = ""
  txtTgl_Lahir.Text = ""
  txtTelepon.Text = ""
  txtEmail.Text = ""
  cboGender.ListIndex = -1    ' Tidak memilih satupun
  txtKomentar.Text = ""
  cbValid.Value = vbChecked
  '
End Sub

ADO Versus DAO/RDO Mon - Jan 15, 2001

Posted by supriyatna in Programming, Windows.
Tags: , , , , , , ,
add a comment

(….Puih….Tidak membingungkan seperti yang anda sangka.)
Di Buat : Mon, 15-Jan-2001 1:37 AM

Munculnya istilah-istilah/tehnikal dan konsep baru sering membuat kacau dan menjadi masalah terutama bagi para programmer yang baru akan belajar. Biasanya timbul kebingungan, Mana sebaiknya yang harus dipelajari dan mana yang lebih banyak memberikan keuntungan (Benefit side)?. Contohnya adalah yang berkaitan dengan Teknologi ADO versus DAO/RDO, hampir di setiap forum mailing list Visual basic para programmer pemula di bingung-kan dengan apa perbedaan dari keduanya dan dimana letak keuntunganya. Belum lagi terjawab kebingungan ini, muncul juga istiliah OLEDB, UDA dan lain sebagainya.

Tapi Insya Allah, lewat tulisan singkat ini, saya mencoba untuk menjawab kebingungan anda. Setidaknya ini karena saya pun pernah mengalami kesulitan pemahaman tentang istilah diatas.

Kita mulai saja dengan apa itu ODBC, (Upss…mahluk apa lagi ini). ODBC atau Open DataBase Connectivity merupakan API (Application Programming Interfaec) database yang khusus digunakan untuk mengakses database relasional.

API (Application Programming Interface) (baca epi-ay) merupakan kumpulan dari rutin-rutin program/modul/procedure/function yang bersifat reuseable dan yang menjadi jembatan antara aplikasi yang akan anda buat dengan Sistem Operasi, hardware atau dengan software lainnya (Istilah API hanya berlaku pada Sistem Operasi Window XXX, istilahnya mungkin akan menjadi berbeda jika digunakan pada sistem operasi lain).

Apakah selama ini anda sudah menggunakan API dalam pembuatan aplikasi? Ya! secara tidak langsung anda sebetulnya sudah menggunakan API, ratusan API sudah tersedia dalam sistem operasi Windows. Sadar atau tidak sadar anda sudah menjalankan API-API tersebut, sebutlah anda menjalankan fungsi MsgBox, secara automatis VB akan memanggil API MessageBox yang terletak pada library user32.dll, berikut prototype dari fungsi tersebut.

' Pada VB untuk mengakses API anda dapat
' menggunakan Declare yang dapat anda letakan
' pada level module atau Form tertentu.
int MessageBox(
  HWND hWnd,          // handle of owner window
  LPCTSTR lpText,     // address of text in message box
  LPCTSTR lpCaption,  // address of title of message box
  UINT uType          // style of message box
  );

' Coba bandingan dengan kemudahannya
' dengan, sintaks dibawah;
MsgBox "Ini tidak perlu pendeklarasian fungsi API", _
       "Informasi"

Lalu kenapa anda tidak menggunakan API saja dalam membangun sebuah aplikasi, apa bisa?. Jawabannya adalah! BISA! Tapi ini terlalu kompleks dan rumit. Akan banyak waktu terbuang hanya untuk berurusan dengan API-API tersebut. Kebanyakan programmer adalah menginginkan kemudahan dan kesederhanaan. Termasuk saya, biarlah programmer-programmer Microsoft membuat baru API-API tersebut, yang saya butuhkan sekarang adalah dapat membangun aplikasi dengan cepat, effective dan powerfull (Secara kenyataan Untuk mendapatkan program yang powefull tidak dapat dilakukan dengan cepat, 😉 ). Jadilah API-API tersebut di kemas dan dibungkus dengan dalam suatu library/komponen, dan biasanya terletak pada .DLL atau .OCX.

Begitupula dengan ODBC, terdiri dari fungsi-fungsi API yang tujuannya untuk mengakses database relasional. Suatu impian dari para programmer yang ingin agar dapat berhubungan secara langsung dengan database apa saja tanpa perlu memperhatikan database apa yang digunakan, entah itu Paradox, InterBase, SQLServer, Access, Oracle, MySql dan lain-lain sebagainya. Saya salut kepada anda yang mau menggunakan ODBC API dan selesai dalam waktu 1 hari, tapi bagaimana jika ada orang yang dapat menggantikan waktu kerja anda tersebut menjadi beberapa menit saja dengan menggunakan methoda berbeda???.

Karena kekompleks-an dan kerumitan-nya maka dikemaslah segala fasilitas yang ada pada ODBC kedalam bentuk yang lebih mudah untuk digunakan yaitu dengan melahirkan DAO/RDO suatu Objek ActiveX. ODBC yang merupakan impian para programmer untuk dapat mengakses bermacam database dengan satu cara (One way) dan sudah didukung oleh banyak vendor/third party pembuat database, menyebabkan para programmer Microsoft bermaksud untuk mengembangkan teknologi ini. “Mengakses banyak database hanya dengan satu cara” yang merupakan ide lama dan impian dari para programmer yang sudah terwujud dengan adanya ODBC, akhirnya melahirkan OLE DB suatu tehnologi baru Microsoft dalam pengakses-an database. OLE DB masih berbentuk API sehingga bentuk yang rumit inipun dikemas kembali kedalam bentuk yang lebih mudah digunakan dan berbentuk Objek ActiveX, yang dikenal kemudian dengan nama ADO (ActiveX Data Oject).

Untuk mudahnya adalah OLE DB ekivalen dengan ODBC yaitu sama-sama terdiri kumpulan rutin-rutin API yang membolehkan pengaksesan database relasional, sedangkan bagian untuk membungkus kerumitan tersebut menjadi bagian ADO yang ekivalen dengan DAO/RDO.

Kadang dengan adanya ADO, DAO dan RDO masih ada saja orang yang melihatnya rumit, sehingga dikemas kembali fungsi yang ada pada masing-masing kedalam bentuk visible component (Komponen yang terlihat pada saat waktu design) ADODC, DataControl, RDC.

Selanjutnya, adalah bagaimana menggunakan ADO dalam mengakses database?. Silakan anda lanjutkan membaca artikel ini.

1. Menambah Data kedalam Database.

Untuk proses pengakses-an suatu database dengan menggunakan ADO, sebenarnya tidak jauh berbeda dengan apabila kita menggunakan DAO. Hanya saja pada penjelasan dibawah ini diberikan alternative lainnya. Sehingga anda dapat memilih mana yang sebaiknya digunakan. Kita mulai saja dengan proses penambahan record/row baru.

a. Siapkan tempat untuk menyimpan informasi.
b. Simpan informasi kedalam tempat yg sudah disiapkan sebelumnya.
c. Simpan secara permanent informasi tersebut kedalam suatu media.

' Contoh langsung proses tersebut diatas
' pada Visual Basic adalah sebagai berikut:
rs.AddNew                        ' Langkah (a)
rs.Fields("NAMA") = txtNama.Text ' Langkah (b)
rs.Fields("ALAMAT") = txtAlamat.Text
rs.Update                        ' Langkah (c)

Alternatif lain selain cara diatas adalah dapat menggunakan;

rs.AddNew "NAMA", txtNama.Text
rs.AddNew "ALAMAT", txtAlamat.Text

Atau andapun dapat menggabungkan-nya menjadi satu baris yaitu dengan menggunakan Fungsi Array, perhatikan contoh dibawah:

rs.AddNew Array("NAMA", "ALAMAT"), _
          Array(txtNama.Text, txtAlamat.Text )

2. Merubah informasi pada Database.

Untuk merubah data yang ada, pada DAO kita dapat menggunakan Method .Edit. Tapi hal ini tidak dapat lagi dilakukan apabila menggunakan ADO. Karena pada ADO method .Edit sudah tidak ada lagi. Lalu bagaimana jika ingin merubah/memperbaiki/mengedit data yang sudah ada?.

Mudah!… ya, ada dapat menggunakan Method .Update, perhatikan contoh dibawah ini.

' Contoh langsung proses tersebut diatas

rs.Fields("NAMA") = txtNama.Text
rs.Fields("ALAMAT") = txtAlamat.Text
rs.Update

Langkah untuk mengedit data dapat dilakukan tanpa menggunakan Method .Edit (Pada ADO tidak terdapat Method .Edit). Alternatif lainnya dapat dilihat pada contoh berikut dibawah.

rs.Update "NAMA", txtNama.Text
rs.Update "ALAMAT", txtAlamat.Text

Atau andapun masih dapat menggunakan cara berikut;

rs.Update Array("NAMA", "ALAMAT"), _
          Array(txtNama.Text, txtAlamat.Text

3. Menghapus data dari Database.

Sederhana!… Cukup dengan menggunakan Method .Delete selesai semuanya. Ok!

' Hapus record/row yang aktif.
rs.Delete

Nah..Jika anda perhatikan dari contoh-contoh diatas, Tidak terlalu berbeda bukan? Apabila dibandingkan dengan menggunakan DAO. Untuk melihat contoh lengkap tentang bagaimana mengakses database dengan menggunakan ADO, silahkan anda lihat pada Artikel berjudul “Menggunakan Technologi ADO untuk mengakses database”

Satu lagi!. Selain dari langkah/cara diatas ternyata masih ada satu lagi cara untuk berkomunikasi dengan database. Ya! yaitu dengan menggunakan SQL Statement. Ulasaan lengkapnya dapat anda jumpai pada artikel berjudul “ADO, SQL dan ORACLE”

Kesimpulannya adalah…
Baik ADO ataupun DAO/RDO, dibuat memang dengan tujuan yang berbeda. Technologi ADO lahir untuk melengkapi kekurangan dari technologi sebelumnya yaitu DAO dan RDO. Saya sendiri menganjurkan kepada anda untuk menggunakan ADO. Mengapa ? Karena dengan menggunakan ADO anda dapat membangun aplikasi Client/server dan sekaligus dapat membuat aplikasi yang berbasis Internet, dan hanya dengan ADO (untuk saat ini) inilah teknologi OLEDB dapat digunakan.

Lagi pula untuk menggunakan technologi ADO tidaklah terlalu sulit. Hampir dipastikan apabila anda sebelumnya sudah pernah menggunakan DAO ataupun RDO, pasti dapat juga membangun suatu aplikasi dengan menggunakan ADO. Sedangkan dari segi kecepatan/performance, semuanya tinggal kepada anda. Dapatkah anda memanfaatkan technologi ADO (yang jelas lebih baik: Silahkan anda lihat di http://www.microsoft.com/data ) dengan semaksimal mungkin. Atau hanya sekedar menggunakan hanya dengan alasan teknologi ADO merupakan hal yang baru tanpa tahu sisi kelebihannya dan bagimana memaksimalkan-nya.