Laporan Pemrogaman Chapter 8

of 21 /21
LAPORAN PEMROGAMAN BASIS DATA JARINGAN ”Transactions”  Disusun oleh: Ajeng Yona Falah Informatik a 3A 3.34.12.0.01 PROGAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK ELEKTRO POLITEKNIK NEGERI SEMARANG 2014/2015

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))

    [email protected]

    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

    [email protected] int

    [email protected] int

    [email protected] int

    [email protected] =0

    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

    [email protected] 0

    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))

    [email protected]

    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