Laporan Pemrogaman Chapter 8
-
Author
ajeng-yona-fallah -
Category
Documents
-
view
217 -
download
0
Embed Size (px)
Transcript of Laporan Pemrogaman Chapter 8
-
7/25/2019 Laporan Pemrogaman Chapter 8
1/21
LAPORAN PEMROGAMAN
BASIS DATA JARINGAN
Transactions
Disusun oleh:
Ajeng Yona Falah
Informatika 3A
3.34.12.0.01
PROGAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SEMARANG
2014/2015
-
7/25/2019 Laporan Pemrogaman Chapter 8
2/21
I. Tujuan Instruksional Khusus
Setelah melaksanakan praktikum ini, mahasiswa diharapkan mampu:
1.
Memahami konsep transaksi
2.
Menggunakan transaksi dalam SQL Server3. Menggunakan transaksi dalam SQL Server dan VB .NET
II. Dasar Teori
Apa itu Transaksi
Transaksi merupakan sekelompok operasi yang dijalankan bersamaan. Apabila
sebuah operasi mengalami kesalahan, maka dipastikan seluruh operasi di dalam
transaksi tersebut gagal dan dikembalikan ke keadaan semula.Semuah contoh umum dari penggunaan transaksi adalah proses pengiriman uang
dari dua buah rekening. Proses ini membutuhkan dua buah operasi, yaitu
mengurangi jumlah uang dari rekening pertama dan menambahkan jumlah uang
sejumlah yang dikirimkan oleh rekening pertama pada rekening kedua. Kedua buah
operasi ini tidak boleh mengalami kegagalan di salah satu pihak dan jika salah satu
operasi mengalami kegagalan, seluruh akun akan dikembalikan ke keadaan semula
sebelum proses pengiriman uang dilakukan.
Kapan Transaksi Digunakan
Sebuah transaksi dilakukan ketika terdapat beberapa operasi yang harus berhasil
atau gagal sempurna dari seluruh operasi yang ada di dalamnya. Berikut ini
merupakan beberapa rekomendasi penggunaan transaksi:
Ketika beberapa data harus dimasukkan, dirubah, atau dihapus secara
bersamaan dalam satu waktu
Ketika ada perubahan pada suatu tabel dimana ada tabel lain yang harus
konsisten, mengikuti perubahan tabel yang diikutinya
Pada kondisi ransaksi yang terdistribusi, ketika data dimanipulasi melalui server
yang berbeda
Mengenali ACID Properties
ACID merupakan sebuah singkatan dari empat buah properti utama dari transaksi,
yaitu atomicity, consistency, isolation, dan durability.
-
7/25/2019 Laporan Pemrogaman Chapter 8
3/21
Atomicity
Sebuah transaksi tidak bisa teruraikan akan operasioperasi di dalamnya, sehingga
aksi yang dilakukan untuk menjalankan sekelompok operasi hanya satu kali bukan
menjalankan satu demi satu beberapa operasi terpisah. Sehingga sebuah transaksi
akan berhasil hanya ketika seluruh operasi yang dilakukan tidak ada yang
mengalami kegagalan.
Consistency
Sebuah transaksi harus bisa menjaga ketetapan (konsistensi) data yang ada di dalam
database baik ketika transaksi tersebut berhasil ataupun gagal. Transaksi harus bisa
menjaga integritas data yang telah termodifikasi oleh transaksi tersebut.
Isolation
Sebuah transaksi harus memiliki batasan yang pasti dan tidak mengganggu
transaksi yang lain dalam satu waktu. Transaksi melihat data pada keadaan data
sebelum mengalami perubahan atau sesudah mengalami perubahan.
Durability
Data yang termodifikasi dari keberhasilan sebuah transaksi harus bersifat permanen
apapun kondisinya. Sebuah catatan transaksi juga diperlukan sehingga seluruh
kegiatan transaksi bisa diketahui baik transaksi gagal maupun berhasil.
Desain Transaksi
Transaksi menggambarkan kejadian riil seperti transaksi pada bank, pemesanan
tiket pesawat, pembayaran uang sewa, dan sebagainya. Sebuah desain transaksi
digunakan untuk menetapkan kebutuhan transaksi, seperti:
Data yang digunakan pada transaksi
Fungsi dari pada sebuah transaksi
Hasil dari transaksi
Pentingnya transaksi untuk pengguna
Frekuensi pemakaian transaksi yang pasti
Ada tiga jenis transaksi utama
Retrieval transactions : menarik data yang ada
Update transactions : menambah, menghapus, ataupun mengubah data yang
ada di dalam database
-
7/25/2019 Laporan Pemrogaman Chapter 8
4/21
Mixed transactions : melakukan kedua buah jenis transaksi penarikan dan
modifikasi data.
Kedudukan TransaksiTanpa adanya sebuah kegagalan, seluruh transaksi akan selesai dengan baik. Meski
demikian, sebuah transaksi juga bisa dibatalkan apabila mengalami sebuah
kegagalan pada salah satu operasi.
Batasan dalam Transaksi
Batasan transaksi pada SQL Server membantu untuk mendefinisikan awal dan akhir
transaksi menggunakan fungsi dan metode API:
Statemen T-SQL: penggunaan statemen BEGIN TRANSACTION, COMMIT
TRANSACTION, COMMIT WORK, ROLLBACK TRANSACTION,
ROLLBACK WORK, dan SET IMPLICIT_TRANSACTIONS untuk
menggambarkan awal transaksi.
Fungsi dan metode API: API database seperti ODBC, OLE DB, ADO, dan
.NET Framework memiliki metode dan fungsi yang digunakan di dalam
penggambaran transaksi.
Statemen T-SQL yang Diijinkan dalam Transaksi
Seluruh jenis statemen T-SQL bisa dilakukan pada transaksi, kecuali statemen
statemen berikut:
ALTER DATABASE, RECONFIGURE, BACKUP, RESTORE, CREATE
DATABASE, UPDATE STATISTIC, dan DROP DATABASE.
Transaksi Lokal dalam SQL Server
-
7/25/2019 Laporan Pemrogaman Chapter 8
5/21
Seluruh sistem database seharusnya memberikan dukungan transaksi built-in.
Transaksi yang dibatasi hanya menggunakan sebuah database dinamakan transaksi
lokal. Pada jenis transaksi ini terbagi menjadi empat mode, yaitu autocommit,
explicit, implicit, dan batch-scoped transaction.
Autocommit Transaction : Mode manajemen transaksi default dari MSSQL
Server. Seluruh statemen T-SQL akan dilakukan atau dikembalikan ke keadaan
semula ketika selesai dijalankan.
Explicit Transaction : Sebuah mode transaksi dimana kontrol awal dan akhir
transaksi tersebut terlihat jelas.
Implicit Transaction : Mode transaksi dimana efek dari transaksi tidak secara
langsung merubah data yang ada di dalam database. Seluruh efek dari transaksi
yang dilakukan belum akan berhenti hingga statemen COMMIT atau ROLLBACK
dijalankan.
Batch-Scoped Transaction : Sebuah mode yang mengijinkan ADO.NET untuk
mendapatkan kesempatan dari MSSQL Server 2014 untuk menjalankan beberapa
perintah aktif pada sebuah obyek koneksi.
Distribusi Transaksi pada SQL Server
Penggunaan sebuah database di dalam proses transaksi disebut dengan transaksi
lokal. Apabila terdapat beberapa database yang akan digunakan dalam kegiatan
transaksi dinamakan transaksi terdistribusi. Umumnya, transaksi terdistribusi tidak
beda jauh dengan transaki lokal, tetapi pada transaksi terdistribusi proses
menjalankan transaksi dibagi menjadi dua fase, yaitu prepare dan commit phase.
Prepare Phase : Ketika pengontrol transaksi mendapatkan permintaan untuk
menjalankan transaksi, pengontrol memberikan perintah persiapan terhadap seluruh
pengontrol data yang bersangkutan dengan transaksi.
Commit Phase : Setelah pengontrol transaksi berhasil melakukan persiapan,
pengontrol mengirimkan perintah COMMIT pada masing masing pengontrol
data. Ketika salah satu dari pengontrol data mengalami kegagalan, pesan gagal
tersebut dikirimkan ke pengontrol transaksi yang kemudian memberitahukan ke
seluruh pengontrol data untuk menggagalkan proses transaksi.
Pembuatan Transaksi
-
7/25/2019 Laporan Pemrogaman Chapter 8
6/21
-
7/25/2019 Laporan Pemrogaman Chapter 8
7/21
deletefromCustomers
whereCustomerID [email protected]
-- save error number returned from Delete [email protected] [email protected]@ERROR
[email protected] >@maxerr
[email protected] [email protected]
-- if an error occured, roll back
[email protected] 0begin
rollback
print'Transaction rolled back'
end
elsebegin
commit
print'Transaction committed'
end
print'INSERT error number:'+cast(@inserr asnvarchar(8))
print'DELETE error number:'+cast(@delerr asnvarchar(8))
4.
Ketikkan query berikut ini, kemudian klik tombol execute. Hasil yang
ditampilkan pada jendela result harus bernilai nol.
5. Untuk melihat hasil dari query sebelumnya, jalankan query berikut ini :
6.
Tambahkan customer baru dengan parameter nilai aa untuk @newcusiddan @newcompname, serta zuntuk @oldcustid.
-
7/25/2019 Laporan Pemrogaman Chapter 8
8/21
7. Tampilkan kembali hasilnya menggunakan perintah SELECT.
B.
Yang Terjadi Ketika Operasi Pertama Gagal
1. Tambahkan customer baru dengan parameter nilai a untuk @newcusid,
a untuk @newcompname, dan aa untuk @oldcustid.
C. Yang Terjadi Ketika Operasi Kedua Gagal
1.
Tambahkan customer baru dengan parameter nilai aaa untuk @newcusid,
aaa untuk @newcompname, dan ALFKI untuk @oldcustid.
D. Yang Terjadi Ketika Operasi Pertama dan Kedua Gagal
1. Tambahkan customer baru dengan parameter nilai a untuk @newcusid,
a untuk @newcompname, dan ALFKI untuk @oldcustid.
E. Bekerja dengan ADO.NET Transaktions
1. Buat Windows Form Application baru dengan nama Chapter8.
2.
Ubah nama Form1.vb menjadi Transaction.vb
-
7/25/2019 Laporan Pemrogaman Chapter 8
9/21
3. Ubah Text property dari Transaction from menjadi ADO.NET Transaction
in VB.NET.
4. Tambahkan tiga label, tiga text box, dan satu button ke form.
5. Tambahkan dan import perintah ke Transaction.vb
ImportsSystem.Data.SqlClient
Double klik button1, kemudian ketikkan kode program berikut ini:
ImportsSystem.Data.SqlClientPublicClassTransaction
PrivateSubButton1_Click(sender AsObject, e AsEventArgs)
HandlesButton1.Click
Dimconn AsNewSqlConnection
conn.ConnectionString = "Data Source=AJENG;Initial
Catalog=Northwind;Integrated Security=True"'INSERT
Dimsqlins AsString= "insert into customers (customerid,
CompanyName)values(@newcustid, @newconame)"
' DELETE
Dimsqldel AsString= "delete from customers where customerid= @oldcustid "
' Open connection
conn.Open() '
' Begin transaction
Dimsqltrans AsSqlTransaction= conn.BeginTransaction()
Try' create insert command
Dimcmdins AsSqlCommand= conn.CreateCommand()
cmdins.CommandText = sqlins
cmdins.Transaction = sqltrans
cmdins.Parameters.Add("@newcustid",System.Data.SqlDbType.NVarChar, 5)
cmdins.Parameters.Add("@newconame",
System.Data.SqlDbType.NVarChar, 30)
' create delete command
-
7/25/2019 Laporan Pemrogaman Chapter 8
10/21
Dimcmddel AsSqlCommand= conn.CreateCommand()
cmddel.CommandText = sqldel
cmddel.Transaction = sqltrans
cmddel.Parameters.Add("@oldcustid",System.Data.SqlDbType.NVarChar, 5)
' add customer
cmdins.Parameters("@newcustid").Value = TextBox1.Text
cmdins.Parameters("@newconame").Value = TextBox2.Textcmdins.ExecuteNonQuery()
' delete customercmddel.Parameters("@oldcustid").Value = TextBox3.Text
cmddel.ExecuteNonQuery()
'Commit transaction
sqltrans.Commit()
' No exception, transaction committed, give messageMessageBox.Show("Transaction committed")
Catchex AsSystem.Data.SqlClient.SqlException
'Roll back transaction
sqltrans.Rollback()
MessageBox.Show("Transaction rolled back"+
ControlChars.Lf + ex.Message, "Rollback Transaction")
Catchex AsSystem.ExceptionMessageBox.Show("System Error"+ ControlChars.Lf +
ex.Message, "Error")
Finally
' Close connectionconn.Close()
EndTry
EndSub
EndClass
6. Jalankan program dengan menekan tombol kombinasi Ctrl+F5.
Lakukan penambahan customer dengan parameter nilai b, bb, dan
bbb.
Lakukan penambahan customer dengan parameter nilai a, aa, dan aaa.
-
7/25/2019 Laporan Pemrogaman Chapter 8
11/21
V. Lembar Kerja
No Judul / Hasil / Analisa
1 Membuat Transaksi pada T-SQL
Ketika kita menjalankan prosedur ini, yang terjadi adalah kita
menambahkan pelanggan a, kemudian menambahkan company a, serta
menghapus pelanggan z. Semua operasi berhasil dijalankan walaupun tidak
ditemukan pelanggan dengan id z, namun oleh T-SQL dianggap itu tidak
dibutuhkan sehingga tidak muncul pesan kesalahan.
2 Yang Terjadi Ketika Operasi Pertama Gagal
Dari pesan panel dapat dilihat bahwa transaksi melakukan rolling back.
@maxerr mengembalikan nilai 2627 untuk insert, menunjukkan bahwa
operasi insert gagal dikarenakan pelanggan a sudah terdaftar. Sedangkan
operasi delete dengan nilai 0 menunjukkan bahwa operasi berhasil dilakukan
3 Yang Terjadi Ketika Operasi Kedua Gagal
Dari pesan panel dapat dilihat bahwa transaksi melakukan rolling back.
@maxerr mengembalikan nilai 547 untuk delete, menunjukkan bahwa
-
7/25/2019 Laporan Pemrogaman Chapter 8
12/21
operasi delete gagal. Sedangkan operasi insert dengan nilai 0 menunjukkan
bahwa operasi berhasil dilakukan. Operasi insert dapat dilakukan karena
peanggan aaa belum terdaftar sebelumnya.
4Yang Terjadi Ketika Operasi Pertama dan Kedua Gagal
Dari pesan panel dapat dilihat bahwa transaksi melakukan rollingback
meskipun tidak ada pernyataan yang berhasil. @maxerr mengembalikannilai 2627 untuk insert dan 547 untuk delete. Hal ini menunjukkan bahwa
kedua operasi gagal.
5 Bekerja dengan ADO.NET Transaktions
Parameter nilai b,bb,bbb
Parameter nilai a,aa,aaa
Setelah kita membuka koneksi, berarti kita menciptakan sebuah transaksi.
Berdasarkan praktik ini, kita tidak dapat menciptakan transaksi yang kedua
untuk koneksi yang sama sebelum transaksi yang pertama melakukan rolling
back. Meskipun telah menggunakan metode BeginTransaction, transaksi itu
-
7/25/2019 Laporan Pemrogaman Chapter 8
13/21
sendiri tidak akan melakukan pekerjaan sampai dengan perintah SQL
pertama dijalankan.
VI.
Studi Kasus1.
Buat tabel mahasiswa dengan atribut nim, nama, email. Isi dengan tiga data
mahasiswa.
Master_mhs
createtablemaster_mhs(
nim varchar(12)primarykey,
nama varchar(50),
email varchar(30)
)
Isi table master_mhs
insertinto[dbo].[master_mhs]
values
('3.34.12.0.01','Ajeng','[email protected]'),
('3.34.12.0.03','Ayin','[email protected]'),
('3.34.12.0.04','Istu','[email protected]')
2. Buat tabel relasional, tabel nilai dengan atribut nim, makul, nilai. Pada tabel
nilai diisi masing-masing mahasiswa 3 makul.
Nilai
createtablenilai(
nim varchar(12)referencesmaster_mhs(nim)
//ondeletecascade
//onupdatecascade,
kode_mk varchar(3)referencesmaster_mk(kode_mk)
//ondeletecascade
//onupdatecascade,nilai char(1)
-
7/25/2019 Laporan Pemrogaman Chapter 8
14/21
)
Isi table nilai
insertinto[dbo].[nilai]
values
('3.34.12.0.01','001','A'),
('3.34.12.0.01','002','B'),
('3.34.12.0.01','003','C'),
('3.34.12.0.03','001','B'),
('3.34.12.0.03','002','C'),
('3.34.12.0.03','003','A'),
('3.34.12.0.04','001','C'),
('3.34.12.0.04','002','A'),
('3.34.12.0.04','003','B')
3. Buat tabel makul dengan atribut kode makul, makul. Isi dengan tida data makul.
Master_mk
createtablemaster_mk(
kode_mk varchar(3)primarykey,
makul varchar(50))
Isi table master_mk
insertinto[dbo].[master_mk]values
('001','Pemrograman Basisdata Jaringan'),
('002','Sistem Multimedia'),
('003','Sistem Terbenam')
-
7/25/2019 Laporan Pemrogaman Chapter 8
15/21
4.
Buat stored procedure untuk insert dan delete.
Membuat sp_Edit_Mhs
createproceduresp_Edit_Mhs
@newnim varchar(12),
@newname varchar(50),
@newemail varchar(30),
@oldnim varchar(12)
as
begintransaction
-- Add a customerinsertintomaster_mhs(nim,nama,email)values (@newnim,@newname,@newemail)
-- save error number returned from insert statement
[email protected] [email protected]@ERROR
[email protected] >@maxerr
[email protected] [email protected]
-- delete a customer
deletefrommaster_mhs
wherenim [email protected]
-- save error number returned from Delete [email protected] [email protected]@ERROR
[email protected] >@maxerr
[email protected] [email protected]
-- if an error occured, roll back
begin
rollback
print'Transaction rolled back'
end
elsebegin
commit
print'Transaction committed'end
-
7/25/2019 Laporan Pemrogaman Chapter 8
16/21
print'INSERT error number:'+cast(@inserr asnvarchar(8))
print'DELETE error number:'+cast(@delerr asnvarchar(8))
Hasil
-
Semua operasi berhasil
- Operasi pertama gagal
- Operasi kedua gagal
-
7/25/2019 Laporan Pemrogaman Chapter 8
17/21
- Semua Operasi gagal
5.
Buat menggunakan coding vb berbasis gui.
Buat Windows Form Application baru dengan nama TransaksiMahasiswa.
Ubah nama Form1.vb menjadi transactionMhs.vb
Tambahkan empat label, empat text box, dan satu button ke form.
-
7/25/2019 Laporan Pemrogaman Chapter 8
18/21
Tambahkan dan import perintah ke Transaction.vb
Double klik button1, kemudian ketikkan kode program berikut ini:
ImportsSystem.Data.SqlClient
PublicClasstransactionMhs
PrivateSubBtnExec_Click(sender AsObject, e AsEventArgs)HandlesBtnExec.Click
Dimconn AsNewSqlConnection
conn.ConnectionString = "Data Source=AJENG;Initial
Catalog=DBmahasiswa;Integrated Security=True"'INSERT
Dimsqlins AsString= "insert into master_mhs (nim, nama,
email)values(@newnim, @newname, @newemail)"' DELETE
Dimsqldel AsString= "delete from master_mhs where nim =
@oldnim "
' Open connection
conn.Open() '
' Begin transactionDimsqltrans AsSqlTransaction= conn.BeginTransaction()Try
' create insert command
Dimcmdins AsSqlCommand= conn.CreateCommand()
cmdins.CommandText = sqlins
cmdins.Transaction = sqltrans
cmdins.Parameters.Add("@newnim",
System.Data.SqlDbType.VarChar, 12)
cmdins.Parameters.Add("@newname",
System.Data.SqlDbType.VarChar, 50)
cmdins.Parameters.Add("@newemail",
System.Data.SqlDbType.VarChar, 30)
' create delete command
Dimcmddel AsSqlCommand= conn.CreateCommand()
cmddel.CommandText = sqldel
cmddel.Transaction = sqltrans
cmddel.Parameters.Add("@oldnim",System.Data.SqlDbType.VarChar, 12)
' add customer
cmdins.Parameters("@newnim").Value = TxtNewNIM.Text
cmdins.Parameters("@newname").Value = TxtNewName.Text
cmdins.Parameters("@newemail").Value = TxtNewEmail.Text
cmdins.ExecuteNonQuery()
' delete customercmddel.Parameters("@oldnim").Value = TxtOldNIM.Text
cmddel.ExecuteNonQuery()
'Commit transactionsqltrans.Commit()
-
7/25/2019 Laporan Pemrogaman Chapter 8
19/21
' No exception, transaction committed, give message
MessageBox.Show("Transaction committed")
Catchex AsSystem.Data.SqlClient.SqlException
'Roll back transaction
sqltrans.Rollback()
MessageBox.Show("Transaction rolled back"+
ControlChars.Lf + ex.Message, "Rollback Transaction")Catchex AsSystem.Exception
MessageBox.Show("System Error"+ ControlChars.Lf +
ex.Message, "Error")
Finally
' Close connection
conn.Close()
EndTry
EndSub
EndClass
Jalankan program dengan menekan tombol kombinasi Ctrl+F5.
Hasil
- Semua operasi berhasil
- Operasi pertama gagal
-
7/25/2019 Laporan Pemrogaman Chapter 8
20/21
- Operasi kedua gagal
- Kedua operasi gagal
-
7/25/2019 Laporan Pemrogaman Chapter 8
21/21
VII. Kesimpulan
Transaksi merupakan sekelompok operasi yang dijalankan bersamaan. Apabila
sebuah operasi mengalami kesalahan, maka dipastikan seluruh operasi di dalam
transaksi tersebut gagal dan dikembalikan ke keadaan semula.
Terdapat tiga statemen yang digunakan untuk mengontrol transaksi pada
MSSQL Server, yaitu :
-
BEGIN TRANSACTION
- COMMIT TRANSACTION
- ROLLBACK TRANSACTION