laporan pemrogaman chapter 8
Post on 24-Feb-2018
226 Views
Preview:
TRANSCRIPT
7/25/2019 Laporan Pemrogaman Chapter 8
http://slidepdf.com/reader/full/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
http://slidepdf.com/reader/full/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
http://slidepdf.com/reader/full/laporan-pemrogaman-chapter-8 3/21
Atomicity
Sebuah transaksi tidak bisa teruraikan akan operasi – operasi 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
http://slidepdf.com/reader/full/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
http://slidepdf.com/reader/full/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
http://slidepdf.com/reader/full/laporan-pemrogaman-chapter-8 6/21
7/25/2019 Laporan Pemrogaman Chapter 8
http://slidepdf.com/reader/full/laporan-pemrogaman-chapter-8 7/21
delete from Customers
where CustomerID = @oldcustid
-- save error number returned from Delete statement set @delerr = @@ERROR
if @delerr > @maxerr
set @maxerr = @delerr
-- if an error occured, roll back
if @maxerr <> 0begin
rollback
print 'Transaction rolled back'
end
else begin
commit
print 'Transaction committed'
end
print 'INSERT error number:' + cast(@inserr as nvarchar(8))
print 'DELETE error number:' + cast(@delerr as nvarchar(8))
return @maxerr
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 “z” untuk @oldcustid.
7/25/2019 Laporan Pemrogaman Chapter 8
http://slidepdf.com/reader/full/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
http://slidepdf.com/reader/full/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
Imports System.Data.SqlClient
Double klik button1, kemudian ketikkan kode program berikut ini:
Imports System.Data.SqlClientPublic Class Transaction
Private Sub Button1_Click(sender As Object, e As EventArgs)
Handles Button1.Click
Dim conn As New SqlConnection
conn.ConnectionString = "Data Source=AJENG;Initial
Catalog=Northwind;Integrated Security=True" 'INSERT
Dim sqlins As String = "insert into customers (customerid,
CompanyName)values(@newcustid, @newconame)"
' DELETE
Dim sqldel As String = "delete from customers where customerid= @oldcustid "
' Open connection
conn.Open() '
' Begin transaction
Dim sqltrans As SqlTransaction = conn.BeginTransaction()
Try ' create insert command
Dim cmdins As SqlCommand = 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
http://slidepdf.com/reader/full/laporan-pemrogaman-chapter-8 10/21
Dim cmddel As SqlCommand = 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 customer cmddel.Parameters("@oldcustid").Value = TextBox3.Text
cmddel.ExecuteNonQuery()
'Commit transaction
sqltrans.Commit()
' No exception, transaction committed, give message MessageBox.Show("Transaction committed")
Catch ex As System.Data.SqlClient.SqlException
'Roll back transaction
sqltrans.Rollback()
MessageBox.Show("Transaction rolled back" +
ControlChars.Lf + ex.Message, "Rollback Transaction")
Catch ex As System.Exception MessageBox.Show("System Error" + ControlChars.Lf +
ex.Message, "Error")
Finally
' Close connection conn.Close()
End Try
End Sub
End Class
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
http://slidepdf.com/reader/full/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
http://slidepdf.com/reader/full/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
http://slidepdf.com/reader/full/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
create table master_mhs (
nim varchar(12) primary key,
nama varchar(50),
email varchar(30)
)
Isi table master_mhs
insert into [dbo].[master_mhs]
values
('3.34.12.0.01','Ajeng','yonaajeng@gmail.com'),
('3.34.12.0.03','Ayin','nabhanayin@gmail.com'),
('3.34.12.0.04','Istu','danangistu@gmail.com')
2. Buat tabel relasional, tabel nilai dengan atribut nim, makul, nilai. Pada tabel
nilai diisi masing-masing mahasiswa 3 makul.
Nilai
create table nilai (
nim varchar(12) references master_mhs(nim)
//on delete cascade
//on update cascade,
kode_mk varchar(3) references master_mk(kode_mk)
//on delete cascade
//on update cascade, nilai char(1)
7/25/2019 Laporan Pemrogaman Chapter 8
http://slidepdf.com/reader/full/laporan-pemrogaman-chapter-8 14/21
)
Isi table nilai
insert into [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
create table master_mk (
kode_mk varchar(3) primary key,
makul varchar(50) )
Isi table master_mk
insert into [dbo].[master_mk]values
('001','Pemrograman Basisdata Jaringan'),
('002','Sistem Multimedia'),
('003','Sistem Terbenam')
7/25/2019 Laporan Pemrogaman Chapter 8
http://slidepdf.com/reader/full/laporan-pemrogaman-chapter-8 15/21
4.
Buat stored procedure untuk insert dan delete.
Membuat sp_Edit_Mhs
create procedure sp_Edit_Mhs
@newnim varchar(12),
@newname varchar(50),
@newemail varchar(30),
@oldnim varchar(12)
as
declare @inserr int
declare @delerr int
declare @maxerr int
set @maxerr = 0
begin transaction
-- Add a customer insert into master_mhs (nim, nama, email) values (@newnim, @newname, @newemail)
-- save error number returned from insert statement
set @inserr = @@ERROR
if @inserr > @maxerr
set @maxerr = @inserr
-- delete a customer
delete from master_mhs
where nim = @oldnim
-- save error number returned from Delete statement set @delerr = @@ERROR
if @delerr > @maxerr
set @maxerr = @delerr
-- if an error occured, roll back
if @maxerr <> 0
begin
rollback
print 'Transaction rolled back'
end
else begin
commit
print 'Transaction committed' end
7/25/2019 Laporan Pemrogaman Chapter 8
http://slidepdf.com/reader/full/laporan-pemrogaman-chapter-8 16/21
print 'INSERT error number:' + cast(@inserr as nvarchar(8))
print 'DELETE error number:' + cast(@delerr as nvarchar(8))
return @maxerr
Hasil
-
Semua operasi berhasil
- Operasi pertama gagal
- Operasi kedua gagal
7/25/2019 Laporan Pemrogaman Chapter 8
http://slidepdf.com/reader/full/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
http://slidepdf.com/reader/full/laporan-pemrogaman-chapter-8 18/21
Tambahkan dan import perintah ke Transaction.vb
Double klik button1, kemudian ketikkan kode program berikut ini:
Imports System.Data.SqlClient
Public Class transactionMhs
Private Sub BtnExec_Click(sender As Object, e As EventArgs)Handles BtnExec.Click
Dim conn As New SqlConnection
conn.ConnectionString = "Data Source=AJENG;Initial
Catalog=DBmahasiswa;Integrated Security=True" 'INSERT
Dim sqlins As String = "insert into master_mhs (nim, nama,
email)values(@newnim, @newname, @newemail)" ' DELETE
Dim sqldel As String = "delete from master_mhs where nim =
@oldnim "
' Open connection
conn.Open() '
' Begin transaction Dim sqltrans As SqlTransaction = conn.BeginTransaction()Try
' create insert command
Dim cmdins As SqlCommand = 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
Dim cmddel As SqlCommand = 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 customer cmddel.Parameters("@oldnim").Value = TxtOldNIM.Text
cmddel.ExecuteNonQuery()
'Commit transaction sqltrans.Commit()
7/25/2019 Laporan Pemrogaman Chapter 8
http://slidepdf.com/reader/full/laporan-pemrogaman-chapter-8 19/21
' No exception, transaction committed, give message
MessageBox.Show("Transaction committed")
Catch ex As System.Data.SqlClient.SqlException
'Roll back transaction
sqltrans.Rollback()
MessageBox.Show("Transaction rolled back" +
ControlChars.Lf + ex.Message, "Rollback Transaction")Catch ex As System.Exception
MessageBox.Show("System Error" + ControlChars.Lf +
ex.Message, "Error")
Finally
' Close connection
conn.Close()
End Try
End Sub
End Class
Jalankan program dengan menekan tombol kombinasi Ctrl+F5.
Hasil
- Semua operasi berhasil
- Operasi pertama gagal
7/25/2019 Laporan Pemrogaman Chapter 8
http://slidepdf.com/reader/full/laporan-pemrogaman-chapter-8 20/21
- Operasi kedua gagal
- Kedua operasi gagal
7/25/2019 Laporan Pemrogaman Chapter 8
http://slidepdf.com/reader/full/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
top related