PENDIDIKAN JARINGAN KOMPUTER DAN SISTEM INFORMASI ©Copyright PIKSI-ITS 2002 Ruang C.2 Telp: (031)5929871 Fax: (03
03 Jurusan Teknik Elektro ITS Keputih Sukolilo - Surabaya 1)5929870 : piksi-its@ee.its.ac.id
i
Hak Cipta
Buku dan Logo dari PIKSI – ITS ini adalah merupakan hak cipta dari PIKSI-ITS.
Dilarang memperbanyak, memfotocopy sebagian atau seluruh isi dari buku dan logo tanpa seijin dari pihak PIKSI-ITS
Disclaimer
Book and Logo PIKSI-ITS are copyright© of PIKSI-ITS No part of this book, including interior design , cover and logo
Kata Pengantar
Jenis pendidikan satu tahun sekarang ini sudah mulai banyak jumlah-nya. Salah satunya adalah Pendidikan Jaringan Komputer dan Sistem Informasi – ITS atau disingkat PIKSI – ITS. PIKSI pertama mengkhususkan diri pada bidang Jaringan Komputer dan Basis Data. Kemudian menyesuaikan diri dengan perkembangan dan minat masyarakat, dibuka kelas baru Aplikasi Perkantoran.
Salah satu bidang yang diajarkan PIKSI sekarang ini adalah Sistem Database. Diharapkan bahwa buku ini akan menunjuang bagi mereka yang berminat mendalami bidang ini, juga sebagai pembantu dalam perkuliahan PIKSI-ITS.
Saran dan kritik anda tentang buku atau kualitas pengajaran dapat anda kirimkan ke email : piksi-its@ee.its.ac.id.
Ketua PIKSI-ITS
iii
Daftar Isi
Kata Pengantar………...ii Daftar Isi………...iii
Universal Data Access………1-1 I.1. Sekilas tentang Universal Data Access ... 1-2 I.2. Membandingkan ADO dengan metode Data Access lain ... 1-3
Pengenalan Object Model ADO……… 2-1 II.1 Membuat Object ADO ... 2-2 II.2 ADO Connection Object ... 2-3 II.3 ADO Command Object... 2-4 II.4 ADO Recordset Object... 2-4 II.4.1 Setting CursorType Property... 2-4
Mengatur Koneksi ke Data Source……… 3-1 III.1 Definisi ADO Connection Object... 3-2 III.2 Membangun Koneksi ... 3-2 III.2.1 Melakukan Update dengan Connection Object ... 3-3 III.2.2 Disconnecting dari Data Source... 3-4 III.3 Latihan: Membuat Koneksi... 3-4 III.4 Menggunakan ADO Command Object... 3-5
Menerima Record dari Data Source………4-1 IV.1 Menggunakan ADO Recordset Object ... 4-2 IV.1.1 Menggunakan Explicit Connection Object... 4-2 IV.1.2 Menggunakan Implicit Connection Object... 4-3 IV.1.3 Locking the Recordset ... 4-4 IV.2 Mengakses Record dalam Recordset ... 4-4 IV.3 Binding Control ke ADO Recordset... 4-5 IV.4 Membuat Multiple Recordset ... 4-6
Navigating Records……… 5-1 V.1 ADO Navigation Properties ... 5-2 V.2 ADO Navigation Methods ... 5-2 V.3 Latihan : Navigating an ADO Recordset ... 5-2
Memodifikasi Record………. 6-1 VI.1 Memodifikasi dengan Perintah SQL ... 6-2 VI.2 Memodifikasi Record dalam Recordset... 6-2 VI.2.1 Menambah Rekord... 6-2 VI.2.2 Menghapus Record ... 6-3 VI.2.3 Modifikasi Record ... 6-3 VI.2.4 Membatalkan Perubahan atau Penambahan Rekord... 6-3
BAB
1
Universal Data Access
Tujuan :
Pada Bab Ini diharapkan mahasiswa dapat :
•
Mendeskripsikan tujuan dari strategy universal data access strategy
•
Mengidentifikasikan component dari OLE DB.
•
Mendefinisikan tiga bagian umum data access method.
Universal Data Access 1 - 2
I.1. Sekilas tentang Universal Data Access
Universal Data Access (UDA) adalah starategi Microsoft strategy untuk menyediakan akses ke semua type daari informasi, dari berbagai macam source disampint relational database sederhana. Data source ini termasuk mainframe ISAM/VSAM, hierarchical databases, e-mail, file systems, text, dan graphical data. OLE DB mendasari interface yang mampu UDA.
Microsoft ActiveX Data Objects (ADO) dikembangkan untuk OLE DB. ADO
menggantikan database programming interfaces debelumnya, seperti DAO dan RDO. Karena ADO dibangun pada puncak dari OLE DB, ADO menguntungkan dari UDA infrastructure.
Modern data-intensive application membutuhkan penggabungan dari informasi tidak hanya dalam mengatur system database tradisional tapi juga file systems, spreadsheets, e-mail, dan banyak lagi. Kekuatan dari strategy Microsoft UDA adalah strategy is that it is delivered through a common set of object-oriented interfaces. These interfaces aere based on the Microsoft Component Object Model (COM). OLE DB, yang mana berdasar pada COM, digunakan untuk menyediakan akses ke data melewati
organisasi seperti ilustrasi dalam gambar 1.1.
ambar 1.1 The universal data access architecture
bangun pada Open Database Connectivity (ODBC) application programming interface (API). Ini merupakan standart untuk mengakses semua type dari data. Dimana ODBC dibuat untuk
G
mengakses relational databases, OLE DB didesain untuk relational dan non-relationa information source. OLE DB termasuk langsung mendukung ODBC untuk
kemampuan kedepan untuk broad range dari ODBC driver relational database hari ini.
Component OLE DB terdiri dari data providers, data consumers, dan service compone
l
tersedia
nts, seperti diilustrasikan dalam gambar 1.2.
I.2. Membandingkan ADO dengan metode Data Access lain
Meskipun aplikasi dapat menggunakan Data Access Objects (DAO) dan Remote Data bjects (RDO) dalam Visual Basic 6.0, ADO adalah data-access method Microsoft menganjurkan untuk suatu aplikasi database.
Semua dari data access methods ini adalah COM interfaces dan dapat digunakan dari
Gambar 1.2 OLE DB components
O
berbagai macam tools, termasuk Microsoft Visual Basic, Microsoft Access, dan Microsoft Office. Yang mana, berbedaannya adalah:
Universal Data Access 1 - 4 • ADO adalah object model untuk mengakses semua type data melalui OLE DB
Seperti Visual Basic, Java, C++, VBScript, dan
.
JScript dapat menggunakan ADO yang mana dapat mengakses data dari OLE DB source apa saja. Kamu
e-mail atau data yang berada pada dalam spreadsheet.
•
l Basic untuk
mengakses ODBC data tanpa melakukan pengkodean ke ODBC API melalui
programmable object model. RDO didesain untuk mengambil keuntungan dari ti SQL
•
i tiga data access methods. Dengan DAO, kamu dapat mengakses data dalam Microsoft Jet databases, Microsoft Jet-connected
data sources, sepeerti FoxPro, Paradox, atau Lotus 1-2-3. Bandingkan ke ata ula
Setelah kamu m jawaba
itu mudah menggunakan, dengan sedikit pengkodean.
an akan
nternet Information dapat menggunakan ADO untuk mengakses relational data denga baik seperti
RDO adalah object model untuk mengakses relational data melalui ODBC.
RDO didesain untuk memberikan perkembangan Visua
COM interface ke ODBC API dan menyediakan funsi dari ODBC dalam
database server yang menggunakan sophisticated query engines, seper Server dan Oracle.
DAO adalah object model untuk mengakses local atau SQL data melalui Jet.
DAO paling tua dar
ODBC databases, and installable indexed sequential access method (ISAM)
teknologi ADO terbaru dan RDO, DAO adalah terlambat, kurang mampu d access alternative. DAO, sepeti teman, Microsoft Jet database engine, sem didesain untuk mendukung ISAM data access.
melihat setiap metode mengakses data, kamu mungkin ingin tagu mengapa embutuhkan ADO jika kamu telah menggunakan RDO/DAO. Disini dasar n untuk menjawaba pertanyaan tersebut :
• ADO dapar mengakses semua type data, mengingat RDO dan DAO mengakses hanya relational data.
• ADO object model tidak sekomplek seperti RDO atau DAO dan oleh karena
• ADO merupakan penggabungan dari keistemewaan RDO dan DAO d menggantikan RDO dan DAO.
• ADO adalah standart data access object model melalui Microsoft tools, termasuk Visual Basic, Access, Office, dan Microsoft I
Pengenalan Object Model ADO
Tujuan :
Pada Bab Ini diharapkan mahasiswa dapat :
•
Mengenali
Organisasi
dari ADO object model.
•
Mendeskripsikan role dari ADO Connection object.
•
Mendeskripsikan role dari ADO Command object.
•
Mendeskripsikan role dari ADO Recordset object.
BAB
Pengenalan Object Model ADO 2 - 2
II.1 Membuat Object ADO
del menyediakan kemudahan untuk me-set object, properties, dan etode untuk membuat aplikasi yang mengakses dan memanipulasi data. Meskipun
mpu keluaar dari scope hierarchy, objects yang ada dalam
tionships, seperti ditunjukkan dalam gambar 2.1. Contahnya, tidak terface pemrograman database sebelumnya, kamu tidak harus embuat Connection object sebelum mengakses Recordset object. Dengan ADO, amu dapat langsung membuat Recordset object, yang mana automatis membuat
rmasuk koneksinya. Konsep ini biasanya disebut "flat" object model.
Gambar 2.1 The ADO Object Model DO object model mempunyai tujuh objects:
• Connection object
Memelihara informasi koneksi dengan data provider.
• Command object
Memelihara informasi tentang command, seperti stored procedure dalam SQL Server database. Kamu dapat menjalankan command string pada Connecton object atau query string seperti sewaktu membuka Recordset object, tanpa mendefinisikan Command object. Command object berguna dimana kamu membutuhkan untuk mendefinikan query parameter atau menjalankan stored procedure yang mengembalikan hasil suatu parameter.
• Recordset object
Berisi rekord dari query. Kamu dapat membuka rekordset tanpa secara eksplisit (jelas) membuka Connection object. Yang mana, jika pertama kamu dengan jelas membuat Connection object, kamu dapat membuka multiple ADO object mo m ADO objects ma ierarchical rela eperti dengan in h s m k te A
Recordset objects pada konek mengurangi beban server.
si yang sama. Ini mengurangi aplikasi dan
Single parameter untuk parameter perintah. Command object mendukung Kumpulan parameter.
enghasilkan dua atau lebih
. Property object endukung informasi ak didukung oleh that ADO. Property
Setiap k es dan methods yang membolehkan
kamu u bekerja dengan pemrograman ADO,
ts: Connection, Command, and
• Field object
Contains information about a single column of data within a recordset. The Recordset object supports the Fields collection.
• Parameter object
• Error object
Berisi penyampaian informasi error tentang kondisi yang berlansung oleh provider. Sejak adanya pernyataan tunggal dapat m
error, Errors collection dapat berisi lebih dari satu Error object.
• Property object
Berisi kaarakteristik pendefinisian provider dari ADO object digunakan ketika data provider membutuhkan untuk m specifik tentang data source yang tid
object membuat ADO extensible.
eistemewaan ADO object dari properti ntuk memanipulasi object. Ketika kamu kamu seperlunya menggunakan tiga ADO objec Recordset objects.
Catatan
nakan ADO dalam aplikasi Visual Basic, kamu
II.2 A
Contoh
yang term embolehkan kamu
untuk konfigurasi property CommandTimeout. Property ini menentukan berapa lama seharusnya ADO embangun koneksi sebelum menghentikan
ussaha n
koneks
Sebelum kamu menggu
harus set reference ke Microsoft ActiveX Data Objects 2.0 Library atau versi yang lebih tinggi.
DO Connection Object
, sebelum membangun koneksi, dalam aplikasi dapat membuat koeksi string asuk user's logon name dan password. Koneksi juga m
menunggu ketika m
membangun koneksi dan akan menghasilkan error bila gagal mengadaka i.
Pengenalan Object Model ADO 2 - 4
II.3 A
Command objects didefinisikan menentukan secaara detail informasi tentang data yan i atabase. Command objects dapat berdasarkan object database yang lain (seperti tabel, view, atau stored prosedure) atau Structured Query Language (SQL)
Command object membuka koneksi baru atau menggunakan koneksi yang ada, tergangung pada apa yang kamu tentukan dalan property ActiveConnection. Jika kamu set property ActiveConnection dengan refensi untuk Connection object yang ada. Jik
berart koneksi baru dibangun untuk Command object. Yang mana, sejak lebih daari satu Command object dapat menggunakan Connection object yang sama, ini berari yan t
II.4 A
Record and. Kamu
gunkan Recordset objects untuk manipulasi data daari provider. Semua Recordset obj s gunakan records (baris) dan field (kolom).
Ketika cursor. secara
satu rek ah atau menghapus rekord yang aktif itu
e menentukan bagaimana kamu dapat menggunakan rekord dalam rekords enyeting lebih dahulu property CursorType sebelum
membuka recordset. Jika kamu tidak menetukan property sebelum kamu membuka recordset, maka nilainya adalah Static cursor. Empat macam type cursor yang tersedia pada ADO:
•
pada data sebenarnya dalam data source. Setiap nggunakan boookmark untuk membaca artinya aplikasi selalu membaca nilai terakhir yang disimpan oleh user. Dynamic cursor automatis meng-update
kasi
sedia hanya sebagai server-side cursor.
Catatan
DO Command Object
g d terima daari d
query.
a kamu menentukan property ActiveConnection dengan connection string,
g a effisient.
DO Recordset Object
set object mewakili seluruh rekord dari tabel atau executed comm
ect dibangunan meng
kamu gunkan data dalam recordset object, kamu bekerjaja dengan database Cursor aalah database object digunkan aplikasi untuk memanipulasi data individu rekord yang ada. Misalkan, ketika kamu membuat rekordset, hanya
ord yang aktif. Kamu dapat merub tanpa mempengaruhi rekord yang lain.
II.4.1 Setting CursorType Property
Property CursorTyp et. Kamu dapat m
Dynamic cursor
Berisi sekumpulan bookmark
saat client meminta rekord, ADO me nilai yang ditunjuk pointer. Yang
ketika user menambah atau menghapus rekord atau merubah banyak rekord yang ada dalam rekordset. Dengan cursor ini membuat lalu lintas data pada server sangat padat karena setiap kamu berpindah dari rekord satu ke rekord lain selalu dipantau oleh sever. Dynamic cursor pilihan yang baik jika apli harus mendeteksi semua perubahan yang dibuat oleh user lain. Cursor ini ter
• Keyset cursor
n
• Static cursor
seakan-akan menyalin data dari database ke g r
u set LockType ogramer dan pengarang menyebut juga an sesuatu yang sepesial untuk
Microsoft Jet Engine tidak mendukung dynamic cursor, jadi jika kamu memaksakan untuk membuka dynamic cursor dengan Jet OLE DB Provider kamu selalu menerima hasil seperti membuka denga keyset cursor.
Serupa dengan dynamic cursor, tapi setiap user lain mengadakan perubaha pada data maka tidak langsung ditampakan dalam rekordset. Kamu dapat membaca dan memodifikasi semua rekord, tapi kamu akan mendapat error jika kamu mengakses rekord yang telah dihapus oleh user lain. Keyset cursor hanya tersedia sebagai serve-side cursor.
Static cursor sebenarnya adalah
rekordset, bila user lain merubah data pada database maka tidak akan langsun terlihat pada user yang mengakses database dengan static cursor. Statuc curso biasanya merupakan pilihan terbaik untuk menerima data dari stored
prosedure. Kamu sehaaarusnya membuat client-side static cursor hanya ketika client workstation mempunyai memori yang cukup.
• Forward-only cursor
Forward-only cursor adalah nilai default untuk server-side cursor dan hanya tersedia untuk server-side cursor. Cursor ini sangat efisien khususnya jika kam
= adReadOnly dan CacheSize = 1. Banyak pr seperti noncursor. Kamu tidak harus melakuk
menggunakan cursor ini (noncursor) karena cursor ini default untuk ADO. Kamu dapat menafigasi forward-only Rekordset hanya menggunkan MoveNext mothod. Jika kamu ingin mendapat penampilan aplikasi yang baik untuk meng-update rekord, kamu seharusnya lakukan semua update melalui SQL commands atau stored prosedure.
Mengatur Koneksi ke Data Source 3 - 1
si ke Data Source
3
BABMengatur Konek
Tuj
Pada
•
Menghubungkan Data Source dengan menggunakan object ADO
uan :
Bab Ini diharapkan mahasiswa dapat:
III.1 Definisi ADO Connection Object
ederhana menggunakan ADO untuk mengakses data source:
arasikan variabel object Koneksi.
untuk membangun hubungan dengan data source (membuka .
Sejak koneksi dibuka, kamu dapat menjalankan query yang mengubah rekord atau megembalikan dari rekord yang disebut recordset.
3. Menjala 4. Menutu
Koneksi ke data souce server resources bebas.
un Koneksi
embuat koneksi ke database dan ketika oneksi sedang berjalan, semua peritah ke database dapat dijalankan.Syntax untuk
enjelasan metode untuk membuka koneksi:
• ConnectionString
String yang bernilai berisi informasi koneksi. Informasi ini menentukan :
o Nama provider yang digunakan koneksi. o Nama dari provider – berupa file.
• UserID
String bernilai berisis nama user ketika membangun koneksi.
• Password
String bernilai berisi informasi password user ketika membangun koneksi.
• Options
Optional ConnectOptionEnum bernilai menentukan apakah metode open bernilai akan mengembalikan sesudah (synchronously) atau sebelum (asynchronously) koneksi terjadi. Kamu dapat menge-set dengan adConnectUnspecified atau adAsyncConnect.
ontoh membangun koneksi : Dasar aplikasi s 1. Mendekl 2. Mencoba koneksi) nkan perintah SQL. p koneksi.
III.2 Membang
enggunakan metode Open untuk m Dengan m
k
membuka koneksi :
connection.Open ConnectionString, UserID, Password, Options P
Mengatur Koneksi ke Data Source 3 - 3 Private Sub cmdConnect_Click()
' Declare the object variable
' This variable will contain the connection information
' Instantiate the object variable Set cnPubs = New ADODB.Connection
' st
"Data Source=VB6ENTSVR;" & _ "Initial Catalog=Pubs"
' Open the database connection cnPubs.Open strConnect, "sa", "" End Su
Dim cnPubs As ADODB.Connection
Dim strConnect As String
Define the OLE DB connection string rConnect = "Provider=SQLOLEDB;" & _
b
CATATAN
"Data Source=" bernilai dalam connection string adala nama dari remote server. "Initial Catalog=" bernilai nama database dalam
optional karena kamu dapat
menentukan informasi koneksi menggunakan property ConnectionString Connection object's roperty, seperti ditunjukkan dibawah ini :
Privat
' Declare the object variable Dim c u
' Instantiate the object variable Set cnPubs = New ADODB.Connection
'
cnPubs.ConnectionString = "Provider=SQLOLEDB;" & _ "UID=sa;pwd=;" & _
"Data Source=VB6ENTSVR;" & _ ' cnPubs.Open End u III.2.1 Sejak k . Dengan
menggu mu dapat mengirim peerintah
SQL ke database tanpa mengebalikan semua rekord ke client. Contoh, kamu mungkin ua prices dalam database dengan 10 percent. Dalam external data source.
Semua penjelasan untuk metode Open adalah
ConnectionString p
e Sub cmdConnect_Click()
nP bs As ADODB.Connection
Set the ConnectionString property value
"Initial Catalog=Pubs" Call the Open method without any arguments
S b
Melakukan Update dengan Connection Object
oneksi telah terjadi, kamu dapat me-update rekord dalam database nakan metode Execute Connection object's , ka
hal ini, kamu dapat menggunakan perintah query update melalui metode Execute,
metode Close untuk kan teknik yang baik untuk m applikasi berakhir.
Sub cmdClose_Click() cn
' Clear the object to free client resources Set cnPubs = Nothing
End Sub
III.3 L
baru Standard EXE. .
ects 2.0 Library dan klik OK. set property Name property ke
Connect.
programnya :
ata = New Connection With cnData
.Provider = "SQLOLEDB"
"Initial Catalog=Pubs"
End If
seperti contoh dibawah ini :
Sub cmdUpdatePrices_Click()
tles Set Price = Price * 1.1" cnPubs.Execute "UPDATE Ti
d Sub En
III.2.2 Disconnecting dari Data Source
Sejak kamu mengahkiri koneksi, kamu menggunakan memutuskan hubungan dari data source. Ini merupa menutup semua koneksi yang terbuka sebelu
Code mengahkiri koneksi dari data source :
Pubs.Close
atihan: Membuat Koneksi
Pada Latihan ini. Kamu menghubungkan database dengan menggunakan OLE DB provider.
• Untuk menghubungkan OLE DB provider menggunakan code 1. Buka Visual Basic dan buat project
2. Pada Menu Project, klik References
3. Check Microsoft ActiveX Data Obj
4. Tambahkan CommandButton ke Form1,
cmdConnect, dan property Caption ke &
5. Dalam cmdConnect_Click event procedure, code
Private Sub cmdConnect_Click() Dim cnData As Connection
' Instanciate the connection Set cnD
.ConnectionString = "User ID=sa;" & _ "Data Source=VB6ENTSVR;" & _
.Open End With
If cnData.State = adStateOpen Then MsgBox "Connection successful."
Mengatur Koneksi ke Data Source 3 - 5 ' Close the connection and release the cnData object
cnData.Close
Set cnData = Nothing
TATAN End Sub CA SQ ource parameter.
The ConnectionString has a parameter value that uses the SQL Server OLE OLE DB provider requires a different value for the roperty.
tton.
meneripa kotak pesan (pesan error).
8. Ketika selesai, klik End pada menu Run.
nggunakan ADO Command Object
an untuk data source. Ini dapat berdasarkan object yang lain
stor p
Com a ksi
unt rty
Act rensi ke
Co dari
Connection object. Jika kamu menentukan property ActiveConnection dengan
connec uk Command object. Yang mana, sejak
itu lebi nggunakan Connectionobject yang sama,
pada um n satu koneksi. Sekali Command
object d menjalankan perintah yang
ditentu
Query merubah rekord
dalam d untuk menghasilk rekord,
dimana enrubah rekord. Jika kamu
mengiri pernyataan Select, kamu dapat mengembalikan banyak rekordset recordsets dengan satu
Comma ored procedure, untuk
mengak
The Data Source parameter of the ConnectionString must point to a Server. If the name of the SQL Server is different (than VB6ENTSVR) on your network, you have to change the value of the Data S
DB provider. Each ring p ConnectionSt
6. Pada menu Run, klik Start. 7. Klik tombol Connect bu
Jika koneksi sukses, kamu tidak akan
III.4 Me
Command object didefinisikan dari menentukan perintah yang dijalank
pada database(such as a table, view, or ed rocedure) atau perintah SQL.
m nd object yang lain terbuka dalam koneksi baru atau menggunakan kone uk melakukan query, tergantung pada apa yang kamu tentukan didalam prope
Connection. Jika kamu set property ActiveConnection
ive dengan refe
nnection object, Command object menggunakan koneksi yang berjalan
tion string, Koneksi baaru dibangun unt h dari satu Command object dapat me
umnya lebih effisient untuk menggunaka uk ibuat, kamu dapat menggunakan itu unt
recordset. kan atau membangun
strings menghasilkan records seperti recordset, atau hanya atabase. Misalnya, menggunakan pernyataa
Update atau Delete hanya m n Select pernyataan SQL
m lebih dari satu
pernyataan. Dengan enggunakan property ndText untuk menentukan pernyatan SQL, atau st
source. ses pada data
Berbag
Comma ntuk
menent unakan.
Daftar nilai yang diidukung CommandType :
Value Description
adCmdText Digunakan jika query string adalah perintah SQL. adCmd
adCmd
procedure. adCmd
set
adC fik untuk OLE DB providers yang
ataan SQL dan mempu untuk langsung erdasarkan nama tabel. Ini merupakan
adCmdUnknown Digunakan ketika command type tidak jelas diketahui, dan alankan command text pertama seperti pernyataan SQL, kemudian seperti stored
abel. Jika error terjadi jika semua dari usaha tersebut gagal. Karena Command
fault.
t ai macam kemungkinan printah yang kamu tempatkan pada property
harus juga menggunkan property CommandType u ndText, tetapi kamu
uka type dari command yang dig
Table Digunkan jika query string adalah nama dari suatau tabel. StoredProc Digunakan jika query string adalah nama dari stored
File Digunakan jika query string adalah nama dari file yang digunakan untuk menyimpan rekord dalam object Rekord sebelumnya.
mdTableDirect Digunakan spesi mendukung perny membukan tabel b
varisi pada adCmdTable.
provider mencoba untuk menj
procedure, dan ahkirnya seperti nama t
object harus menunjukkan langkah tersebut untuk
menentukan type dari query string, Hasil adalah menurun. Ini adalah nilai de
Berikut ini kode menggunakan Command object untuk menambah pesentase discoun untuk semua rekord dalam tabel Discount dengan nilai 10 percent:
Private Sub cmdDoCommand_Click() Dim comDiscountUpdate As Command
Set comDiscountUpdate = New Command With comDiscountUpdate
.CommandType = adCmdText
.ActiveConnection = "Provider=SQLOLEDB;" & _ "User ID=sa;" & _
"Data Source=VB6ENTSVR;" & _ "Initial Catalog=Pubs"
.CommandText = "UPDATE Discounts SET Discount = Discount * 1.1"
' Call the Execute method to update the Discounts .Execute
End With End Sub
Mengatur Koneksi ke Data Source 3 - 7 CATATAN
d procedure atau table. Query string dapat juga nama dari store
Menerima Record dari Data Source
Tujuan :
Pada Bab Ini diharapkan mahasiswa mampu:
•
Mengembalikan records dari data source.
•
Definisi dan menggunakan cursors.
•
Mengembalikan dan mengatur banyak recordsets.
BAB
Navigating Records 4 - 2
IV.1 Menggunakan ADO Recordset Object
t mewakili hasi dari pelaksanaan perintah pda data source. Kamu apta menggunakan object tersebut untuk memanipulasi data. Sekali koneksi
source, kamu dapta mengebalikan rekord dengan menggunakan cordset object's.
erikut ini syntax untuk mengakse rekord dalam data source :
cordset.Open Source, ActiveConnection, CursorType, LockType, Options Penjelasan m
Argument Description
urce Optional. Bisa berupa Nama variaberl yang berisi, pernyataan SQL, nama tabel, memanggil stored procedure.
Optional. Nama variabel koneksinya atau String berisi parameter ConnectionString.
dari cursor provider rdset.
kan apa type dari locking membuka
ptions Optional. Benilai Longyang menandakan bagaimana
provider menilai Source argument jika menunjukkan sesuatu yang lain dari Command object, atau yang menunjukkan recordset yang disimpan daei file dimana file tersebut disimpan sebelumnya.
.1.1 Menggunakan Explicit Connection Object
amu dapat membangun Recordset object berdasarkan active connection ke data urce, yang mana dibatasi jumlah dari koneksi dan mengurangi sejumlah resouce lient dan server yang digunakan dalam applikasi. Bergantung pada kebutuhan dari
kordset, kamu boleh membutuhkan untuk membangun dalam explicit Connection bject atau Command object lebih dahulu.
erikut ini contoh membuka dengan rekordset baru dari koneksi yang sudah berjalan :
im cnPubs As Connection im rsTitles As Recordset
Instantiate the objects et cnPubs = New Connection et rsTitles = New Recordset
Recordset objec d dibangun ke data etode Open Re m B re
etode Open pada rekordset :
So
ActiveConnection
CursorType Optional. Nilai yang menentukan type o yang digunakan ketika membuka rek LockType Optional. Nilai ynag menentu
(concurrency) provider yang digunakan ketika rekordset. O IV K so c re o B D D ' S S
' Open the connection
cnPubs.ConnectionString = "Provider=SQLOLEDB;" & _
' Retrieve records from the data source
n object yang ada adalah untuk membuka rekordset baru menggunakan implicit connection. Satu dari keistemewaan dariADO obj lah kemampuan memanggil objects langsung. Ketika memanggil Recordset object secara langsung, ADO auto t background Connection
ou cannot a
rekordset ditutup.
ecords dari tabel Titles:
Private Sub cmdO
Dim rsTitles As Recordset
' Instantiat Set rsTitles en a new ds tles.Ope "Provide "Data So "Initial End Sub
ah kode yang akan an implicit
n
"User ID=sa;" & _
"Data Source=VB6ENTSVR;" & _ "Initial Catalog=Pubs"
cnPubs.Open
rsTitles.Open "Select * from Titles", cnPubs
IV.1.2 Menggunakan Implicit Connection Object
Alternative untuk menggunakan Connectio
ect model ada
matis membua
object (Y access this object programmatically). Ini automatis ditutup ketik
Berikut ini contoh menggunkan implicit connection untuk mengembalikan r
penRecordset_Click()
e the Recordset object = New Recordset
' Op rsTi
connection and return the appropriate recor n "Select * from Titles", _
r=SQLOLEDB;User ID=sa;" & _ urce=VB6ENTSVR;" & _
Catalog=Pubs"
Seperti kamu lihat, menggunakan teknik ini mengurangi sejuml kamu tulis. Yang mana, untuk setiap rekordset yang menggunak
connection, new connection dibuat pada data source. Sebagaian kasus, penambaha connections menggunakan valuable resources. Ini lebih effisient untuk membuat single Connection object dan membuka yang dibutuhkan rekordset dari koneksi itu. Kamu dapat membuat banyak recordsets dari satu koneksi tanpa menambahkan connection resources.
CATATAN
nnections menyebabkan scalability problems applications, seperti dengan gingat explicit Connection objects ketika Menggunakan implicit co
ketika programming enterprise-level Microsoft SQL Server, men
Navigating Records 4 - 4 IV.1.3 Locking the Recordset
ly. Provides for the best performance and he event your application intends to add sting records, you will need to specify a different In a multi-user environment, locking ensures that no two users can
Menggunakan property LockType untuk menyeting pilihan untuk rekordset. Berikut e.
sedang di-edit.
locks records hanya ketika kamu memanggil metode Update rekordset.
mode batch update, ini dipaksa ode. Option ini dibutuhkan rs, termasuk disconnected
nakan optimistic locking:
les", cnPubs, adOpenDynamic, imistic
a dari fied yang kamu akses, kamu dapat syntax berikut untuk mengakses nilai tertentu dari field :
RecordsetObject!FieldName
•
ADO menghasilkan cursors yang read-on nts. In t lowest system resource requireme
records, or edit exi records, delete
cking option. lo
change the same record at the same time.
ini tabel yang memberi keterangan nilai dari property LockTyp
Locking Value Description
adLockReadOnly Data bersifat read-only. Ini merupakan nilai defaultnya. adLockPessimistic Provider memastikan sukses melakukan edit pada
rekords, biasanya rekords di-lock secara tiba-tiba ketika
adLockOptimistic Provider menggunakan optimistic locking, yang mana
adLockBatchOptimistic Records
di-ke immediate update m lock dalam
untuk client-side curso recordsets.
Berikut ini contoh membuta dynamic recordset menggu
rsTitles.Open "Select * from Tit adLockOpt
IV.2 Mengakses Record dalam Recordset
Sekali recordset telah dibuat, kamu dapat mengakses field dari setiap rekord dengan jalan :
• Referensi nama field
Jika kamu mengetahui nam menggunakan
Ini adalah paling efisien dari dua cara untuk referensi field.
Kamu dapat juga menggunakan Recordset object's Fields collection. Cara ini tidak efisient ketika mengakses recordset. Berikut ini syntax untuk mengaksis
window Immediate:
-atau-
tles.
nilai dari field dengan menggunakan Fields collection:
recordsetobject.Fields(0) atau recordsetobject.Fields("FieldName") Berkut ini contoh menampilkan fieldTitle dalam
Debug.Print rsTitles!Title
Debug.Print rsTi Fields(0)
NOTE
Field Title pada fi
Visual Basic menyediaka ntuk
ADO recordsets. Ketika c
menggambarkan data rec Berikut contoh melakukan binds text box ke rekordset rsAuthor :
Set txtAuthor.DataSource = rsAuthor
Kamu dapat juga melakukan bind control lebih komplek ke rekordset. Berikut ini , dibuka menggunakan cnPubs Connection object, dan property Hierarchical Flexgrid's DataSource
Dim cnPubs As ADODB.Connection Dim rsTitles As ADODB.Recordset Dim strConnect As String
strCon "D "I
on object Set cnPubs = New Connection
' Open
cnPubs.Open strConnect, "sa", ""
' Instantiate the Recordset object Set rsTitles = New Recordset
eld pertama dalam collection.
IV.3 Binding Control ke ADO Recordset
n kemampuan untuk control bind seperti text box u ontrol bound ke recordset, control automatis ord's saat itu.
txtAuthor.DataField = "au_fname"
code membuka koneksi ke SQL Server. Recordset, rsTitles
didefinisikan seperti rekordset rsTitles.
nect = "Provider=SQLOLEDB;User ID=sa;" & _ ata Source=VB6ENTSVR;" & _
nitial Catalog=Pubs"
' Instantiate a Connecti
Navigating Records 4 - 6
' Open
' cn connection and return the appropriate records rsTitles.Open "SELECT * From Titles", cnPubs
Set flexTitles.DataSource = rsTitles
unakan ADO kamu dapat mendefinisikan pernyataan perintah yang berisi pernyataan multiple Select, Hasilnya seperti perintah tunggal yang mengembalikan
ih efisien. Multefficient than calling a data source multiple times. Multiple recordsets dapat dibuat menggunakan metode Execute dari Co bject atau metode Open daari Recordset object. Berikut ini contoh membuat dua recordsets dari pernyataan single Open:
rsInfo.Open "SELECT * From Titles;SELECT * From Authors", cnPubs
, s menutup Recordset object sebelum langkah melalui seluruh pernyataan perintah, ADO tidak pernah menjalankan perintah yang tersisa.
at data ataan perintah gabungan dari tiga peryataan SELECT yang terpisah :
s_Click() g LOLEDB;" & _ _ _ ; " & _ a new recordset using the
' Fill the Hierarchial Flexgrid control with ' data from the Titles table
IV.4 Membuat Multiple Recordset
Mengg
lebih dari satu rekordset, yang mana leb
mmand o
IV.4.1 Mendapatkan Rekordset Selanjutnya
Setiap pernyataan dalam perintah gabungan dijalankan dalam urutan masuk, dan hanya satu rekordset dikembalikan di satu waktu. Gunakan metode NextRecordset untuk bergerak kem rekordset berikutnya ketika multiple recordsets dikembalikan. Sejak metode NextRecordset hanya pernyataan perintah selanjutnya yang dijalankan jika kamu dengan jela
Syntaxnya sebagai berikut :
Set rsInfo = rsInfo.NextRecordset
Berikut ini contoh menggunakan metode NextRecordset method untuk melih dalam rekordset yang menggunakan pery
Private Sub cmdCompoundRecordset
Dim rsCompound As Recordset Dim Count As Integer
Dim strConnect As Strin
Dim strSQL As String
strConnect = "Provider=SQ
"Data Source=VB6ENTSVR;" & "Initial Catalog=pubs;" &
"User Id=sa;Password=;" thors strSQL = "SELECT * FROM au
"SELECT * FROM stores; " & _
rsCompound.Open strSQL, strConnect, _
Debug.Print "Recordset #" & Count
elds(0), _ rsCompound.Fields(1)
"SELECT * FROM jobs"
Set rsCompound = New Recordset
rsCompound.CursorLocation = adUseClient
adOpenUnspecified, _ adLockUnspecified
Do Until rsCompound Is Nothing
Do While Not rsCompound.EOF Debug.Print , rsCompound.Fi
rsCompound.MoveNext Loop
Set rsCompound = rsCompound.NextRecordset Count = Count + 1
Loop End Sub
Memodifikasi Record 5 - 1
Navigating Records
BAB
5
Tujuan :
ada Bab Ini diharapkan mahasiswa mampu :
Menggunakan ADO recordset navigation methods
Menjelaskan
bermacam-macam ADO recordset navigation properti
P
•
•
V.1 ADO Navigation Properties
ar properties dari Recordset object yang digunakan untuk nafigasi cordset:
Description
bsolutePage Letak atau mengembalikan halaman sebenarnya.
bsolutePosition Letak atau mengembalikan posisi sebenarnya dari nilai rekord (ini dapat dipakai oleh rekord menambah atau menghapus). BOF Menandakan jika pointer
rekord pertama.
ookmark Mengembalikan unique identifier untuk nilai rekord. Setting property ini untuk menentukan record's bookmark
perpindahan record pointer ke rekord.
Menandakan jika pointer rekord digerakkan setelah rekord terahkir.
MsgBox "The end of the recordset has been reached." nd If
.2 ADO Navigation Methods
erikut ini daftar metode daari Recordset object yang digunakan untuk navigasi elalui recordset.
Method Description
ove Bergerak ditentukan nomor dari rekordset, maju atau mundur. oveFirst Bergerak ke rekord pertama.
oveLast Bergerak ke rekord terakhir. oveNext Bergerak ke rekord selanjutnya. ovePrevious Bergerak ke rekord sebelumnya.
.3 Latihan : Navigating an ADO Recordset
alam latihan ini kamu akam membuat applikasi dengan membuat recordset object erdasar pada tabel dalam database SQL Server Pubs. Aplikasi ini akan mempunyai tombol nafigasi seperti gambar dibawah ini.
Berikut ini dafta re
Property
A A
rekord telah digerakkan sebelum
B
EOF
Berikut ini contoh menggunakan property EOF:
If rsAuthor.EOF Then _ E
V
B m M M M M MV
D bMemodifikasi Record 5 - 3
Gamabar 5.1 Dat
• To connect to the SQL Server
1. Buka Visual Basic Standard EXE baru. 2. Pada Menu Project, klik References.
2.0 Library dan klik OK. 4. Set property Nama project ke PracL4.
1 ke frmAuthors
e txtFirst dan 7. Tambahkan empat controlsCommandButton dan control Label ke form.
Name Caption
CmdFirst |<
Command2 Name CmdPrevious
man CmdNext
>>
man CmdLast
>|
LblRecordCount abase navigation controls on the form
3. Check Microsoft ActiveX Data Objects
5. Set property dari Form
6. Tambahka dua control Textbox ke form. Set properties name k
tLast.
tx
Berikut ini setting prperties :
Control Property Value
Command1 Caption << Com d3 Name Caption Com d4 Name Caption Label1 Name Caption <blank>
8. Simpan project files ke folder \Practice\Ch06.
1. Tambahkan variabel ke frmAuthor's seperti be
' Use the events of the Recordset object
Private WithEvents rsAuthors As ADODB.Recordset Private strConnect As String
Private cn As ADODB.Connection
2. Tambahkan kode beerikut ini pada prosedur event Form
Private Sub Form_Load()
' Use your local SQL Server name for the Data Source strConnect = "Provider=SQLOLEDB;User ID=sa;" & _ "Data Source=VB6ENTSVR;" amp; _
rikut ini :
_Load.
"Initial Catalog=Pubs"
' Open a new connection
"sa", ""
ecordset object
e and CursorLocation nDynamic
thors.Open "Select * from Authors", cn
"au_fname" Set txtLast.DataSource = rsAuthors txtLast.DataField = "au_lname" End Su
edian membuat client-side, dyn rdset object dari tabel Authors. Control
au_fna e.
• To add navigation features to the form
1. Menggunakan MoveFirst evious, MoveNext dan MoveLast
methods dalam command button pada event Click emberi user uan nafigasi reko kut ini contoh kode pada prosedure event klik :
rsAuthors.MoveFirst
Private Sub cmdLast_Click()
' Instantiate a Connection object Set cn = New ADODB.Connection
cn.Open strConnect, ' Instantiate the R
Set rsAuthors = New ADODB.Recordset ' Set the CursorType, LockTyp
rsAuthors.CursorType = adOpe
rsAuthors.LockType = adLockOptimistic UseClient rsAuthors.CursorLocation = ad
' Open a new recordset using the
' cn connection and return the appropriate records rsAu
' Bind the Textbox controls
Set txtFirst.DataSource = rsAuthors txtFirst.DataField =
b
Kode ini membuaat koneksi ke Pubs database pada SQL Server. Kem amic Reco
TxtFirst dan txtLast controls bound ke kolom me dan au_lnam
, MovePr
untuk m
kemamp rd. Beri
Private Sub cmdFirst_Click()
Memodifikasi Record 5 - 5 rsAuthors.MoveLast
End Sub
Private Sub cmdPrevious_Click()
2. 3.
• To u
1. rs dari Object drop-down
Private Sub cmdNext_Click() rsAuthors.MoveNext End Sub
rsAuthors.MovePrevious End Sub
Simpan aplikasi kamu.
ating Jalankan aplikasi kamu dan coba Run the application and try navig through the Authors records.
se ADO object events
Dari frmAuthors module window, select rsAutho
Gamabar 5.2 The Object list
2. ure drop-down list, select prosedure MoveComplete. Tambahkan Complete:
te(ByVal adReason As _ pError As ADODB.Error, _ entStatusEnum, _
yVal pRecordset As ADODB.Recordset)
' Avoid reading beyond the end of file (EOF) or the ile (BOF)
Then rsAuthors.MoveFirst End If
' Set the label's caption to show current record ' and total record count
lblRecordCount.Caption = "Record " & _ rsAuthors.AbsolutePosition _
& " of " & rsAuthors.RecordCount End Sub
3. Simpan dan jalank aplikasi kamu. Gambaar 6.3 illustrasi from secara lengkap sewaktu aplikasi dijalankan.
Dari Proced
kode berikutnini untuk event Move
Private Sub rsAuthors_MoveComple ADODB.EventReasonEnum, ByVal adStatus As ADODB.Ev B ' beginning of f If rsAuthors.EOF Then rsAuthors.MoveLast ElseIf rsAuthors.BOF
Memodifikasi Record 6 - 1
emodifikasi Record
BAB
6
M
Tuj
Pa
•
ords menggunakan perintah SQL.
•
Memodifikasi single record menggunakan Recordset Object.
uan :
da Bab Ini diharapkan mahasiswa dapat:
VI.1 Memodifikasi dengan Perintah SQL
u membutuhkan untuk update sejumlah rekord, kamu dapat
enjalankan perintah SQL menggunakan Connection atau Command object's Execute Connection object ketika pernyataan hanya akan dipanggil sekali. and object jika perintah akan dijalankan oleh aplikasi kamu lebih dari membutuhkan untuk memanggil stored procedure. Command object apat dibuat di temporary stored procedure untuk lebih efisien ketika perintha
igunakan lebih dari satu kali
erikut ini menggunakan pernyataan untuk memodifikasi multiple records dalam single database:
Private Sub cmdConnect_Click() Dim cnPubs As Connection Dim strConnect As String
New Connection
OLE DB connection string = "Provider=SQLOLEDB;" & _ "Data Source=VB6ENTSVR;" & _
cnPubs.Close
Set cnPubs = Nothing nd Sub
I.2 Memodifikasi Record dalam Recordset
ka aplikasi kamu telah membuka rekordset, kamu dapat memodifikasi data enggunakan recordset's methods. Memodifikasi rekord dengan Recordset object rbatas untuk satu penambahan, penghapusan, atau update pada satu waktu.
I.2.1 Menambah Rekord
alam perintah untuk menambah rekord baru gunakan AddNew method. Segera telah rekord baru tersebut terisi gunakan Update method untuk menyimpan ke kordset dan data source. Berikut ini contoh menggunakan AddNew method untuk enambah rekord Author:
sAuthors.AddNew
sAuthors!au_fname = "Nancy" sAuthors!au_lname = "Davolio" sAuthors.Update
Jika aplikasi kam m
method. Gunkan unakan Comm ekali jika kamu G s d d B Set cnPubs = ' Define the strConnect "Initial Catalog=Pubs" ' Open the database connection cnPubs.Open strConnect, "sa", "" ' Execute the SQL statement
cnPubs.Execute "UPDATE Titles Set Price = Price * 1.1"
E
V
Ji m te V D se re m r r r rMemodifikasi Record 6 - 3 VI.2.2 Menghapus Record
Untuk menghapus rekord dari recordset, pertama kamu harus nafigasi ke reko
tepat. Gunakan Delete method untuk permanen menghapus record dari recordset dan data source. Berikut ini contoh menghapus suatu rekord:
rsAuthors.Delete
VI.2.3 Modifikasi Record
rd yang
ilai Kemudian menggunakan Update method, kamu dapat menyimpan perubahan untuk recordset dan data source. Berikut ini contoh merubah dan
me-Authors!au_fname = "Nancy"
Penambahan Rekord
n suatu record, atau hasil dari AddNew pat
mu gunakan , cursor mengembalikan ke rekord sebelumnya.
ddNew menggunakan CancelUpdate:
rsAuthors!au_fname = "Nancy"
Untuk merubah suatu rekord dalam recordset, aplikasi kamu dapat memodifikasi n daari setiap field.
update suatu record:
rs
rsAuthors!au_lname = "Davolio" rsAuthors.Update
VI.2.4 Membatalkan Perubahan atau
Jika kamu membutuhkan pembatalan perubaha
method, kamu dapat menggunakan CancelUpdate method. Kamu hanya da Update sebelum mejalankan Update method. Jika ka menggunakan Cancel
CancelUpdate dengan AddNew contoh membatalkan A Berikut ini
rsAuthors.AddNew
rsAuthors!au_lname = "Davolio" rsAuthors.CancelUpdate