Laporan Pemrogaman Chapter 12

download Laporan Pemrogaman Chapter 12

of 17

Transcript of Laporan Pemrogaman Chapter 12

  • 7/25/2019 Laporan Pemrogaman Chapter 12

    1/17

    LAPORAN PEMROGAMAN

    BASIS DATA JARINGAN

    Using Data Readers

    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 12

    2/17

    I. Tujuan Instruksional Khusus

    Setelah menyelesaikan praktikum ini, mahasiswa diharapkan mampu:

    1.

    Mengerti penggunaan Data Reader secara umum

    2.

    Memperoleh informasi tentang Data3. Memperoleh informasi tentang Table

    4.

    Menggunakan multiple result sets dengan Data Reader

    II. Dasar Teori

    A. Memahami Data Reader Secara Umum

    Komponen ketiga penyedia data, selain koneksi dan perintah, adalah pembaca

    data. Setelah Anda terhubung ke database dan tanya, Anda perlu beberapa carauntuk mengakses hasil set. Di sinilah pembaca data masuk.

    Data Reader adalah objek yang mengimplementasikan interface

    System.Data.IDataReader. Seorang pembaca data yang cepat, unbuffered,

    forward-only, read-only terhubung sungai yang mengambil data secara aper-

    baris. Bunyinya satu baris pada satu waktu karena loop melalui hasil set.

    Anda tidak dapat langsung instantiate pembaca data; sebagai gantinya, Anda

    membuat satu dengan metode ExecuteReader dari perintah. Misalnya, dengan

    asumsi cmd adalah objek perintah SqlClient untuk query, berikut adalah cara

    untuk membuat pembaca data SqlClient:

    Rdr redup Sebagai SqlDataReader = cmd.ExecuterReader

    Anda sekarang dapat menggunakan ini pembaca data untuk mengakses

    permintaan itu hasil set.

    B. Penggunaan Ordinal Indexer

    Anda menggunakan pengindeks ordinal untuk mengambil data kolom dari hasil

    yang ditetapkan. Mari kita belajar lebih banyak tentang pengindeks ordinal.

    Kode rdr.GetValue (0) adalah referensi ke item properti pembaca data dan

    mengembalikan nilai dalam kolom tertentu untuk baris saat ini. Nilai

    dikembalikan sebagai objek.

    C. Penggunaan Column Name Indexer

    Sebagian ofthe waktu kita tidak melacak nomor kolom dan lebih memilih

    mengambil nilai-nilai dengan nama kolom masing-masing, hanya karena itu

  • 7/25/2019 Laporan Pemrogaman Chapter 12

    3/17

    jauh lebih mudah untuk mengingat mereka dengan nama mereka, yang juga

    membuat kode lebih mendokumentasikan diri.

    Anda menggunakan nama kolom pengindeksan dengan menentukan nama

    kolom bukannya indeks ordinal

    angka. Hal ini memiliki keuntungan. Misalnya, meja dapat diubah dengan

    penambahan atau penghapusan satu atau lebih kolom, mengganggu kolom

    pemesanan dan meningkatkan pengecualian dalam kode yang lebih tua yang

    menggunakan pengindeks ordinal. Menggunakan nama kolom pengindeks akan

    menghindari masalah ini, tetapi pengindeks ordinal lebih cepat, karena mereka

    referensi kolom langsung daripada melihat mereka dengan nama.

    Potongan kode berikut mengambil kolom yang sama (CompanyName dan

    ContactName) bahwa contoh terakhir lakukan, menggunakan nama kolom

    pengindeks:

    'loop through result set

    While (rdr.Read)

    Console.WriteLine(" {0} | {1}", _

    rdr("companyname").ToString().PadLeft(25), _

    rdr("contactname").ToString().PadLeft(20))

    End While

    D.

    Penggunaan Type Accessor Methods

    Ketika pembaca ADATA mengembalikan nilai dari sumber data, nilai yang

    dihasilkan diambil dan disimpan secara lokal di jenis NET daripada asli jenis

    sumber data. Ini fitur jenis konversi di tempat adalah trade-off antara konsistensi

    dan kecepatan, sehingga untuk memberikan beberapa kontrol atas data yang

    diambil, pembaca data yang mengekspos diketik metode accessor yang dapat

    Anda gunakan jika Anda tahu jenis spesifik nilai yang akan dikembalikan .

    Metode accessor diketik semuanya dimulai dengan Dapatkan, mengambil

    indeks ordinal untuk pengambilan data, dan tipe yang aman; Visual Basic .NET

    tidak akan memungkinkan Anda untuk pergi dengan gips tidak aman. Metode

    ini ternyata lebih cepat dari kedua ordinal dan metode pengindeks nama kolom.

    Menjadi lebih cepat dari nama kolom pengindeksan tampaknya logis, karena

    metode accessor yang diketik mengambil ordinals untuk referensi; Namun, kita

    perlu menjelaskan bagaimana hal itu lebih cepat dari pengindeksan ordinal.

    Hal ini karena meskipun kedua teknik mengambil di sejumlah kolom, metodepengindeksan ordinal konvensional perlu mencari tipe data sumber data dari

  • 7/25/2019 Laporan Pemrogaman Chapter 12

    4/17

    hasil dan kemudian pergi melalui jenis konversi. Ini overhead mencari skema

    dihindari dengan accesor diketik.

    Jenis NET dan mengetik metode accessor tersedia untuk hampir semua jenis

    data yang didukung oleh SQL Server dan database OLE DB.

    Tabel 12-1 harus memberikan Anda ide yang singkat ketika menggunakan

    accesor diketik dan dengan apa tipe data. Itu daftar tipe data SQL Server, jenis

    NET mereka sesuai, NET diketik accesor, dan SQL Server-spesifik accesor

    diketik khusus yang dirancang khusus untuk mengembalikan objek tipe

    System.Data.SqlTypes .

    E. Mendapatkan Informasi Tentang Tables

    Term schema ini memiliki beberapa arti dalam hal database relasional. Di sini,

    kita menggunakannya untuk merujuk pada desain struktur data, terutama tabel

    database. Tabel terdiri dari baris dan kolom, dan setiap kolom dapat memiliki

    tipe data yang berbeda. Kolom dan atribut mereka (tipe data, panjang, dan

    sebagainya) membuat skema tabel.

    Untuk mengambil informasi skema mudah, Anda dapat memanggil metode

    GetSchemaTable pada pembaca data. Seperti namanya, metode ini

    mengembalikan sebuah objek System.Data.DataTable, yang merupakan

    representasi (skema) dari tabel bertanya dan berisi kumpulan baris dan kolom

    dalam bentuk DataRow dan DataColumn objek. Ini baris dan kolom

    dikembalikan sebagai koleksi benda-benda dengan sifat Baris dan Kolom dari

    kelas DataTable.

    Namun, di sinilah sedikit kebingungan biasanya terjadi. Benda kolom Data

    adalah nilai-nilai tidak kolom; bukan, mereka adalah definisi kolom yang

    mewakili dan mengontrol perilaku kolom individu. Mereka dapat dilingkarkan

    melalui dengan menggunakan nama kolom pengindeks, dan mereka dapat

    memberitahu Anda banyak tentang dataset.

    F. Menggunakan Multiple Result Sets dengan Data Reader

    Kadang-kadang anda mungkin ingin mendapatkan pekerjaan dilakukan dengan

    cepat dan juga ingin query database dengan dua atau lebih pertanyaan pada

    waktu yang sama. Dan, Anda tidak ingin kinerja aplikasi secara keseluruhan

    menderita dengan cara apapun baik dengan instantiating lebih dari satu perintah

    atau data reader atau dengan mendalam menggunakan benda-benda yang sama

    berulang-ulang, menambah kode saat Anda pergi.

  • 7/25/2019 Laporan Pemrogaman Chapter 12

    5/17

    Jadi, apakah ada cara Anda bisa mendapatkan pembaca data tunggal untuk loop

    melalui beberapa set hasil? Ya, pembaca data yang memiliki metode,

    NextResult (), bahwa kemajuan pembaca untuk hasil set berikutnya.

    III. Alat dan Bahan

    1. SQL Server 2014

    2. Visual Basic NET

    3. Northwind Sample Database

    IV. Langkah Kerja

    A.

    Looping Melalui Sebuah Kumpulan Hasil1. Buat Projek Visual Basic Console Aplication baru dengan nama Chapter12.

    2. Ubah nama projek Chapter12 menjadi DataLooper. Ubah nama file

    Module1.vb menjadi DataLooper.vb.

    3.

    Ketikkan kode berikut pada halaman kode DataLooper.vb

    ImportsSystemImportsSystem.DataImportsSystem.Data.SqlClientModuleDataLooper

    SubMain()

  • 7/25/2019 Laporan Pemrogaman Chapter 12

    6/17

    Dimconnstring AsString= ("Data Source=AJENG; IntegratedSecurity=True; database=northwind")

    'create command (with both text and connection)Dimsql AsString= "select contactname from customers"'create connectionDimconn AsSqlConnection= NewSqlConnection(connstring)'membuat variabel timer

    Dimtimer AsStopwatch= Stopwatch.StartNewTry

    'Open connectionconn.Open()Dimcmd AsSqlCommand= NewSqlCommand(sql, conn)'create data readerDimrdr AsSqlDataReader= cmd.ExecuteReader'loop through result setWhile(rdr.Read)

    'print one row at a timeConsole.WriteLine("{0}", rdr.GetValue(0))

    EndWhile'close data readerrdr.Close()

    Catche AsExceptionConsole.WriteLine("Error Occurred:"& e.ToString)

    Finally' Close connectionconn.Close()

    EndTry'menghenitkan penghitungan waktutimer.Stop()Console.WriteLine()Console.WriteLine("Total waktu = "&

    timer.Elapsed.TotalSeconds & "detik")

    EndSub

    EndModule4. Jalankan DataLooper dengan menekan tombol Ctrl+F5

    B. Menggunakan Ordinal Indexers

    1. Tambahkan projek Visual Basic Console Aplication baru dengan nama

    OrdinalIndexer pada Chapter12 solution.

  • 7/25/2019 Laporan Pemrogaman Chapter 12

    7/17

    2. Ubah nama file Module1.vb menjadi OrdinalIndexer.vb

    3.

    Ketikkan kode berikut pada halaman kode OrdinalIndexer.vb

    ImportsSystemImportsSystem.DataImportsSystem.Data.SqlClientModuleOrdinalIndexer

    SubMain()Dimconnstring AsString= ("Data Source=AJENG; Integrated

    Security=True; database=northwind")'create command (with both text and connection)Dimsql AsString= "select companyname,contactname from

    customers where contactname like 'M%'"'create connectionDimconn AsSqlConnection= NewSqlConnection(connstring)'membuat variabel timerDimtimer AsStopwatch= Stopwatch.StartNewTry

    'Open connectionconn.Open()Dimcmd AsSqlCommand= NewSqlCommand(sql, conn)'create data readerDimrdr AsSqlDataReader= cmd.ExecuteReader'print headings

    Console.WriteLine("{0} {1}", _"Company Name".PadRight(28), _"Contact Name".PadRight(20))Console.WriteLine("{0} {1}", _"============".PadRight(28), _"============".PadRight(20))'loop through result setWhile(rdr.Read)

    Console.WriteLine(" {0} | {1}", _rdr(0).ToString().PadLeft(25), _rdr(1).ToString().PadLeft(20))

    EndWhile'close data readerrdr.Close()

    Catche AsExceptionConsole.WriteLine("Error Occurred:"& e.ToString)

    Finally' Close connectionconn.Close()

    EndTry'menghenitkan penghitungan waktutimer.Stop()Console.WriteLine()Console.WriteLine("Total waktu = "&

    timer.Elapsed.TotalSeconds & "detik")EndSub

    EndModule

    4.

    Jalankan OrdinalIndexer dengan menekan tombol Ctrl+F5

  • 7/25/2019 Laporan Pemrogaman Chapter 12

    8/17

    C. Menggunakan Type Accessor Methods

    1. Tambahkan projek Visual Basic Console Aplication baru dengan nama

    TypedAccessors pada Chapter12 solution.

    2. Ubah nama file Module1.vb menjadi TypedAccessors.vb

    3.

    Ketikkan kode berikut pada halaman kode TypedAccessors.vb

    ImportsSystemImportsSystem.DataImportsSystem.Data.SqlClientModuleTypedAccessors

    SubMain()Dimconnstring AsString= ("Data Source=AJENG; Integrated

    Security=True; database=northwind")'create command (with both text and connection)Dimsql AsString= "select

    productname,unitprice,unitsinstock,discontinued from products"'create connectionDimconn AsSqlConnection= NewSqlConnection(connstring)'membuat variabel timerDimtimer AsStopwatch= Stopwatch.StartNewTry

    'Open connectionconn.Open()'create commandDimcmd AsSqlCommand= NewSqlCommand(sql, conn)'create data readerDimrdr AsSqlDataReader= cmd.ExecuteReader'loop through result setWhile(rdr.Read)

  • 7/25/2019 Laporan Pemrogaman Chapter 12

    9/17

    Console.WriteLine("{0} {1} {2} {3}", _rdr.GetString(0).PadRight(35), _rdr.GetDecimal(1), _rdr.GetInt16(2), _rdr.GetBoolean(3))

    EndWhile'close data reader

    rdr.Close()Catche AsException

    Console.WriteLine("Error Occurred:"& e.ToString)Finally

    ' Close connectionconn.Close()

    EndTry'menghenitkan penghitungan waktutimer.Stop()Console.WriteLine()Console.WriteLine("Total waktu = "&

    timer.Elapsed.TotalSeconds & "detik")EndSub

    EndModule4. Jalankan TypedAccessors dengan menekan tombol Ctrl+F5

    D. Mendapatkan Informasi sebuah Result Set Menggunakan Data Reader

    1. Tambahkan projek Visual Basic Console Aplication baru dengan nama

    ResultSetInfo pada Chapter12 solution.

    2.

    Ubah nama file Module1.vb menjadi ResultSetInfo.vb

    3. Ketikkan kode berikut pada halaman kode ResultSetInfo.vb

  • 7/25/2019 Laporan Pemrogaman Chapter 12

    10/17

    ImportsSystemImportsSystem.DataImportsSystem.Data.SqlClientModuleResultSetInfo

    SubMain()Dimconnstring AsString= ("Data Source=AJENG; Integrated

    Security=True; database=northwind")'create command (with both text and connection)Dimsql AsString= "select contactname,contacttitle from

    customers where contactname like 'M%'"'create connectionDimconn AsSqlConnection= NewSqlConnection(connstring)'membuat variabel timerDimtimer AsStopwatch= Stopwatch.StartNewTry

    'Open connectionconn.Open()'create commandDimcmd AsSqlCommand= NewSqlCommand(sql, conn)'create data reader

    Dimrdr AsSqlDataReader= cmd.ExecuteReader'get column namesConsole.WriteLine("Column Name:{0} {1}", _rdr.GetName(0).PadRight(20), _rdr.GetName(1))'get column data typesConsole.WriteLine("Data Type:{0} {1}", _rdr.GetDataTypeName(0).PadRight(20), _rdr.GetDataTypeName(1))Console.WriteLine()'loop through result setWhile(rdr.Read)

    'get column values for all rowsConsole.WriteLine("{0} {1}", _

    rdr.GetString(0).ToString().PadRight(25), _rdr.GetString(1))

    EndWhile'get number of columnsConsole.WriteLine()Console.WriteLine("Number of columns in a row: {0}", _rdr.FieldCount)'get info about each columnConsole.WriteLine("'{0}' is at index {1} "& _"and its type is: {2}", _rdr.GetName(0), _rdr.GetOrdinal("contactname"), _rdr.GetFieldType(0))Console.WriteLine("'{0}' is at index {1} "& _

    "and its type is: {2}", _rdr.GetName(1), _rdr.GetOrdinal("contacttitle"), _rdr.GetFieldType(1))'close data readerrdr.Close()

    Catche AsExceptionConsole.WriteLine("Error Occurred:"& e.ToString)

    Finally' Close connectionconn.Close()

    EndTry'menghenitkan penghitungan waktutimer.Stop()

    Console.WriteLine()Console.WriteLine("Total waktu = "&

    timer.Elapsed.TotalSeconds & "detik")

  • 7/25/2019 Laporan Pemrogaman Chapter 12

    11/17

    EndSub

    EndModule

    4. Jalankan ResultSetInfo dengan menekan tombol Ctrl+F5

    E.

    Mendapatkan Informasi Skema

    1. Tambahkan projek Visual Basic Console Aplication baru dengan nama

    SchemaTable pada Chapter12 solution.

    2. Ubah nama file Module1.vb menjadi SchemaTable.vb

    3. Ketikkan kode berikut pada halaman kode SchemaTable.vb

    ImportsSystemImportsSystem.DataImportsSystem.Data.SqlClientModuleSchemaTable

    SubMain()Dimconnstring AsString= ("Data Source=.\sqlexpress;

    Integrated Security=True; database=northwind")'create command (with both text and connection)Dimsql AsString= "select * from employees"'create connectionDimconn AsSqlConnection= NewSqlConnection(connstring)'membuat variabel timerDimtimer AsStopwatch= Stopwatch.StartNewTry

    'Open connectionconn.Open()'create command

  • 7/25/2019 Laporan Pemrogaman Chapter 12

    12/17

    Dimcmd AsSqlCommand= NewSqlCommand(sql, conn)'create data readerDimrdr AsSqlDataReader= cmd.ExecuteReader'store Employees schema in a data tableDimschema AsDataTable= rdr.GetSchemaTableDimrow AsDataRowForEachrow Inschema.Rows

    Dimcol AsDataColumnForEachcol Inschema.Columns

    Console.WriteLine _((col.ColumnName + " = "+ row(col).ToString))

    NextcolConsole.WriteLine("----------------")

    Nextrow'close data readerrdr.Close()

    Catche AsExceptionConsole.WriteLine("Error Occurred:"& e.ToString)

    Finally' Close connectionconn.Close()

    EndTry'menghenitkan penghitungan waktutimer.Stop()Console.WriteLine()Console.WriteLine("Total waktu = "&

    timer.Elapsed.TotalSeconds & "detik")EndSub

    EndModule

    4. Jalankan SchemaTable dengan menekan tombol Ctrl+F5

    F. Menanggani Multiple Result set

    1. Tambahkan projek Visual Basic Console Aplication baru dengan nama

    MultipleResult pada Chapter12 solution.

    2. Ubah nama file Module1.vb menjadi MultipleResult.vb

  • 7/25/2019 Laporan Pemrogaman Chapter 12

    13/17

    3. Ketikkan kode berikut pada halaman kode MultipleResult.vb

    ImportsSystemImportsSystem.DataImportsSystem.Data.SqlClientModuleMultipleResult

    SubMain()Dimconnstring AsString= ("Data Source=.\sqlexpress;

    Integrated Security=True; database=northwind")

    'query1Dimsql1 AsString= "select companyname,contactname fromcustomers where companyname like 'A%'"

    'query2Dimsql2 AsString= "select firstname,lastname from

    employees"'combine queriesDimsql AsString= sql1 + sql2'create connectionDimconn AsSqlConnection= NewSqlConnection(connstring)'membuat variabel timerDimtimer AsStopwatch= Stopwatch.StartNewTry

    'Open connectionconn.Open()'create commandDimcmd AsSqlCommand= NewSqlCommand(sql, conn)'create data readerDimrdr AsSqlDataReader= cmd.ExecuteReaderDo

    Whilerdr.Read()' Print one row at a timeConsole.WriteLine("{0} : {1}", rdr(0), rdr(1))

    EndWhileConsole.WriteLine("".PadLeft(60, "=".ToString))

    LoopWhilerdr.NextResult()Catche AsException

    Console.WriteLine("Error Occurred:"& e.ToString)Finally

    ' Close connectionconn.Close()

    EndTry'menghenitkan penghitungan waktutimer.Stop()Console.WriteLine()Console.WriteLine("Total waktu = "&

    timer.Elapsed.TotalSeconds & "detik")EndSub

    EndModule

    4. Jalankan MultipleResult dengan menekan tombol Ctrl+F5

  • 7/25/2019 Laporan Pemrogaman Chapter 12

    14/17

    V. Lembar Kerja

    No Judul / Hasil / Analisa

    1 Looping Melalui Sebuah Kumpulan Hasil

    Ketika kita memanggil metode Read, nilai dari baris berikutnya akan disimpan di

    objek SqlDataReader. Karena ini dilakukan looping, maka metode read dilakukan

    berulangkali hingga batas akhir baris. Dan karena SqlDataReader berupa objek,

    maka untuk dapat menampilkannya ke layar, harus diubah terlebih dahulu ke

    String. Waktu yang dibuttuhkan untuk mengambil dan menampilkan data

    adalah 1.7262174 detik.

    2 Menggunakan Ordinal Indexers

    Ordinal Indexer digunakan untuk mengambil data kolom dari hasil yang

    ditetapkan. Dalam hal ini mengambil data dari kolom Contactname dengan

    awalan M. Waktu yang dibuttuhkan untuk mengambil dan menampilkan

    data adalah 0.0425616 detik.

    3 Menggunakan Type Accessor Methods

  • 7/25/2019 Laporan Pemrogaman Chapter 12

    15/17

    Teknik ini cepat dan aman, bahkan lebih cepat dari metode ToString.

    Metode ini langsung mengambil data sesuai dengan type nya, sehinga

    langsung dapat ditampilkan ke layar. Sedangkan metode ToString, data

    yang diambil berupa objek, dan harus di konversikan ke dalam bentuk

    String agar dapat ditampilkan. Waktu yang dibutuhkan untuk metode ini

    adalah 0.90335587 detik.

    4 Mendapatkan Informasi sebuah Result Set Menggunakan Data

    Reader

    Program ini digunakan untuk menampilkan data result dari kolom

    contactname dan contacttitle dengan contactname diawali huruf M

    menggunakan metode looping. bukan hanya data dari tabel yang

    ditampilkan, tetapi informasi yang berkaitan dengan data juga ditampilkan.

    Waktu yang dibutuhkan adaalh 0.0710254

    5 Mendapatkan Informasi Skema

  • 7/25/2019 Laporan Pemrogaman Chapter 12

    16/17

    Menampilkan data dari tabel employees beserta struktur datanya

    menggunakan looping dan metode GetValue dan ToString. Waktu yang

    dibutuhkan dalam sekali running adalah 5.9525474 detik

    6 Menanggani Multiple Result set

    Dalam kode program ini, diberikan contoh bagaimana dua perintah

    sekaligus atau lebih dalam satu waktu.

  • 7/25/2019 Laporan Pemrogaman Chapter 12

    17/17

    VI. Kesimpulan

    Data Reader adalah objek yang mengimplementasikan interface

    System.Data.IDataReader. merupakan pembaca data yang cepat, unbuffered,

    forward-only, read-only yang terhubung dan mengambil data dari tabel perbaris.

    Untuk menggunakan DataReader, kita tidak dapat langsung mendeklarasikan

    DataReader. Kita juga harus membuat satu metode ExecuteReader, untuk

    menjalankan DataReader.

    Metode Accessor lebih cepat dan aman dari metode GetValue dan ToString

    yang langsung mengambil data dari database sesuai dengan type datanya, tanpa

    harus mengkonversikan type data terlebih dahulu.