Pencarian Records pada Database Access dengan ASP.NET – Mengenal ASP.NET Bagian 4.5

February 26th 2010

Pada contoh sebelumnya kita telah menggunakan Membaca catatan dari Database Access, Memasukkan Records ke Database Access, Memutakhirkan dan Menghapus Records Records telah sangat sederhana dan mudah dan tidak diizinkan untuk tingkat nyata interaksi pengguna.

Contoh pencarian kami kode di bawah ini sangat mirip dengan contoh Records Membaca catatan meskipun kembali disaring tergantung pada teks masuk ke dalam textbox ‘textbox1′. Ketika pengguna mengklik tombol ‘btnSubmit’ peristiwa klik tombol dinaikkan dan terkait subroutine ‘SearchRecords’ dijalankan kembali catatan yang sesuai.

Kita akan pergi melalui lagi untuk tujuan belajar.

Pertama-tama kita harus mengimpor namespace System.Data.OleDb. Mengimpor namespace ini ke halaman kami memungkinkan kita untuk mengakses Connection, Command dan DataReader kelas yang kita perlu menjalankan beberapa tugas dari database kami.

	<%@ Import  Namespace="System.Data.Oledb"  %>

Selanjutnya kita perlu berpikir tentang membuat sambungan objek yang akan memungkinkan kita untuk melakukan koneksi ke MS Access Database ‘sample_data.mdb’. OledbConnection mendeklarasikan variabel yang cocok untuk tujuan sambungan memegang benda.

	Dim Connection As OledbConnection

Setelah sambungan mendeklarasikan variabel kita perlu menciptakan koneksi objek. Kita melakukan ini dengan menggunakan Kata Kunci Baru dan pada saat yang sama kita lewat di sebuah parameter yaitu connection string ke objek koneksi yang baru dibuat. Connection string yang akan mengadakan nama penyedia bahwa dalam kasus kita adalah Microsoft.jet.Oledb4.0, nama file dan path ke database sample_data.mdb.

Sekali kita telah menciptakan hubungan kita kita dapat menetapkan objek ke variabel hubungan kita ‘connection’.

Kita sekarang dapat membuka sambungan objek.

	Connection.Open()

Dengan sambungan terbuka objek kita sekarang membutuhkan objek perintah untuk mengambil catatan.

Kita akan mendeklarasikan variabel OledbCommand yang cocok untuk tujuan perintah memegang benda.

	Dim Command As OledbCommand

Setelah mendeklarasikan variabel perintah kita perlu menciptakan objek perintah. Kita akan membuat objek Command kita menggunakan Kata Kunci Baru dan pada saat yang sama objek Command menerima 2 parameter yaitu SQL Statement dan sambungan objek. Objek koneksi memegang semua informasi koneksi ke database yang kebutuhan objek perintah kita.

Sekali kita telah membuat objek perintah kita kita dapat memberikan perintah kepada kita variabel ‘command’.

	Command = New OleDbCommand("SELECT * FROM Item WHERE  ItemCode= @ItemCode", Connection)

Anda akan melihat bahwa benda Command query SQL menerima parameter ‘@ LastName’. Parameter akan diambil dari teks milik textbox DNS dan @ Nama_depan parameter yang dilewatkan ke dalam pernyataan SQL hanya dengan menggunakan awalan simbol @ diikuti oleh Nama_depan teks.

Alih-alih menggunakan query parameterised kita bisa menciptakan objek Command kami dan berlalu dalam nilai dimasukkan ke dalam textbox ‘textbox1′ langsung ke dalam query SQL.

	Command = New OledbCommand("SELECT *  FROM  Item WHERE ItemCode='" & textbox1.Text & "',  Connection)

Memilih metode ini memperlihatkan aplikasi kita untuk SQL Injection serangan. Seorang jahat pengguna dapat memasukkan pernyataan SQL secara langsung ke dalam textbox yang akan terus dan membentuk bagian dari SQL query atau membuat ekstra SQL queries. Menggunakan parameterized query kita dapat memastikan bahwa data yang dimasukkan ke dalam textbox diperlakukan sebagai data lapangan untuk perbandingan tujuan dan tidak langsung bagian dari pernyataan SQL.

Selanjutnya kita sebut metode Tambahkan parameter perintah milik kelas dan lulus dalam OledbParameter baru dibuat objek yang menerima nama parameter yang kita tentukan ketika objek diciptakan perintah yaitu @ Nama_depan dan nilai parameter yang dalam hal ini kasus adalah milik teks ‘textbox1′.

	Command.Parameters.Add(New   OleDbParameter("@ItemCode", textbox1.Text))

Sekarang kita perlu kembali catatan dari database ke dalam sebuah obyek DataReader.

Pertama-tama mari kita mendeklarasikan variabel OledbDatareader ‘DataReader’. Kemudian kita akan mengisi dataReader dengan memanggil metode ExecuteReader objek perintah kami. Anda akan melihat bahwa alih-alih menggunakan Kata Kunci Baru seperti yang kita lakukan dengan objek ADO.NET lain kita menggunakan metode ExecuteReader objek Perintah untuk membuat obyek DataReader kami. Perintah referensi objek koneksi dan pernyataan SQL yang diperlukan untuk OledbDataReader untuk memperoleh data.

   Dim DataReader As  OleDbDataReader
   DataReader =  Command.ExecuteReader()

Kita bisa iterate melalui catatan dalam baris demi baris DataReader tapi alternatif yang lebih mudah untuk menempatkan kontrol dalam Gridview kode dalam HTML elemen body dan mengikat DataReader ke Gridview.

Kami mengatur DataSource milik Gridview DataReader kami dan kemudian menggunakan metode dataBind Gridview kita mengikat hasil DataReader.

   GridView1.DataSource =  DataReader
   GridView1.DataBind()

Kami kemudian menutup koneksi.

	Connection.Close()

Berjaga-jaga tidak ada catatan untuk menampilkan kita dapat mengatur Gridview’s emptydatatext properti untuk ‘Tidak ada records’ di bawah ini.

   <%@ Page Language="VB" %>
   <%@ Import Namespace="System.Data.Oledb" %>

   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

   <script runat="server">

   Protected Sub SearchRecords(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim Connection As OledbConnection
    Connection = New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;" & _
    "Data Source=" & server.mappath("sample_data.mdb") )
    Connection.Open()
    Dim Command As OleDbCommand
    Command = New OleDbCommand("SELECT * FROM Item WHERE  ItemCode= @ItemCode", Connection)
    Command.Parameters.Add(New OleDbParameter("@ItemCode", textbox1.Text))
    Dim DataReader As OleDbDataReader
    DataReader = Command.ExecuteReader()
    GridView1.DataSource = DataReader
    GridView1.DataBind()

    Connection.Close()

    End Sub
   </script>

   <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>Search Records MS Access Database</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    <asp:TextBox id="textbox1" runat="server" />
    <asp:Button OnClick="SearchRecords" id="btnSubmit" Text="Submit"  runat="server" />
    <asp:GridView ID=GridView1 runat="server" EmptyDataText="There are no records">
    </asp:GridView>
    </div>
    </form>
    </body>
   </html>