Anda sedang offline saat ini, menunggu internet Anda untuk menyambung kembali

CARA: Menyalin gambar dari Database secara langsung ke kontrol PictureBox dengan Visual Basic.NET

PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.

Klik disini untuk melihat versi Inggris dari artikel ini:317670
Untuk Microsoft Visual C#.NET versi ini Pasal, lihat 317701.
Untuk versi Microsoft Visual Basic 6.0 ini Pasal, lihat 250577.

Artikel ini merujuk kepada berikut Microsoft.NET Framework kelas perpustakaan namespaces:
  • System.data.SqlClient
  • System.io
  • System.Drawing.Imaging

DALAM TUGAS INI

RINGKASAN
Artikel ini selangkah demi selangkah menjelaskan bagaimana untuk menyalin gambar disimpan dalam database langsung ke PictureBox kontrol pada formulir Windows tanpa perlu menyimpan gambar untuk file.

Di Microsoft Visual Basic 6.0, satu-satunya cara untuk menampilkan gambar dari database di PictureBox kontrol, tanpa langkah antara menyelamatkan ganda besar objek {GUMPALAN) data ke file, adalah untuk mengikat PictureBox untuk sumber data seperti ActiveX Data objek (ADO) Data kontrol atau Recordset objek. Ada no way (tanpa data mengikat) pemrograman memuat GUMPALAN ke kontrol tanpa menyimpan gambar ke file untuk digunakan oleh LoadPicture pernyataan.

Artikel ini menggunakan MemoryStream objek dari System.io kelas dasar untuk menyalin data gambar dari database langsung ke The PictureBox kontrol.

back to the top

Persyaratan

Daftar berikut menguraikan fitur perangkat keras, perangkat lunak, jaringan infrastruktur, dan paket layanan yang akan Anda perlukan:
  • Microsoft Visual Studio.NET diinstal pada kompatibel Sistem operasi Microsoft Windows
  • Contoh tersedia Microsoft SQL Server atau tersedia Microsoft Access database untuk pengujian
Artikel ini mengasumsikan bahwa Anda sudah familiar dengan berikut topik:
  • Visual Basic.Aplikasi NET Windows Forms
  • Objek besar biner (GUMPALAN) penyimpanan dalam database
  • ADO.Mengakses data bersih
back to the top

Sampel

  1. Membuat tabel SQL Server atau akses dengan berikut struktur:
    CREATE TABLE BLOBTest(BLOBID INT IDENTITY NOT NULL,BLOBData IMAGE NOT NULL)					
  2. Mulai Visual Studio.NET, dan kemudian membuat Visual baru Aplikasi Windows Forms dasar.
  3. Tarik PictureBox kontrol dan dua Tombol kontrol dari toolbox default Form1. Menetapkan Teks properti Button1 untuk File Database, dan kemudian menetapkan Teks properti Button2 untuk Database untuk PictureBox.
  4. Tambahkan berikut Impor pernyataan di atas kode Formulir modul:
    Imports System.DataImports System.Data.SqlClientImports System.IOImports System.Drawing.Imaging					
  5. Tambah deklarasi berikut untuk koneksi database string di bawah ini Publik kelas Form1, dan kemudian memodifikasi rangkaian sambungan yang diperlukan untuk Anda lingkungan:
        Dim strCn As String = "Data Source=<server>;" & _            "Initial Catalog=<database>;Integrated Security=SSPI"					
  6. Tambahkan kode berikut dalam Klik acara prosedur Button1 (File Database). Mengubah path file untuk file gambar sampel yang tersedia yang diperlukan. Kode ini membaca file gambar dari disk (dengan menggunakan FileStream objek) ke Byte array, dan kemudian memasukkan data ke dalam database dengan menggunakan parameterized Perintah objek.
            Dim cn As New SqlConnection(strCn)        Dim cmd As New SqlCommand("INSERT INTO BLOBTest (BLOBData) " & _            "VALUES (@BLOBData)", cn)        Dim strBLOBFilePath As String = _            "C:\Documents and Settings\All Users\Documents" & _            "\My Pictures\Sample Pictures\winter.jpg"        Dim fsBLOBFile As New FileStream(strBLOBFilePath, _            FileMode.Open, FileAccess.Read)        Dim bytBLOBData(fsBLOBFile.Length() - 1) As Byte        fsBLOBFile.Read(bytBLOBData, 0, bytBLOBData.Length)        fsBLOBFile.Close()        Dim prm As New SqlParameter("@BLOBData", SqlDbType.VarBinary, _            bytBLOBData.Length, ParameterDirection.Input, False, _            0, 0, Nothing, DataRowVersion.Current, bytBLOBData)        cmd.Parameters.Add(prm)        cn.Open()        cmd.ExecuteNonQuery()        cn.Close()					
  7. Tambahkan kode berikut dalam Klik acara prosedur Button2 (Database untuk PictureBox). Kode ini mengambil baris dari BLOBTest tabel dalam database ke dalam DataSet, salinan yang paling baru-baru ini menambahkan gambar ke Byte array dan kemudian ke MemoryStream objek, dan kemudian beban MemoryStream ke Gambar properti PictureBox kontrol.
            Dim cn As New SqlConnection(strCn)        Dim cmd As New SqlCommand("SELECT BLOBID, " & _            "BLOBData FROM BLOBTest ORDER BY BLOBID", cn)        Dim da As New SqlDataAdapter(cmd)        Dim ds As New DataSet()        da.Fill(ds, "BLOBTest")        Dim c As Integer = ds.Tables("BLOBTest").Rows.Count        If c > 0 Then            Dim bytBLOBData() As Byte = _                ds.Tables("BLOBTest").Rows(c - 1)("BLOBData")            Dim stmBLOBData As New MemoryStream(bytBLOBData)            picBLOB.Image = Image.FromStream(stmBLOBData)        End If					
  8. Menjalankan proyek.
  9. Klik File Database untuk me-load setidaknya satu contoh gambar ke dalam database.
  10. Klik Database untuk PictureBox untuk menampilkan gambar yang disimpan dalam PictureBox kontrol.
  11. Jika Anda ingin untuk dapat menyisipkan gambar dari PictureBox kontrol langsung ke dalam database, menambahkan ketiga Tombol kontrol, dan kemudian tambahkan kode berikut dalam yang Klik acara prosedur. Kode ini akan mengambil data gambar dari PictureBox kontrol ke MemoryStream objek, salinan MemoryStream ke Byte array, dan kemudian menyimpan Byte array ke database dengan menggunakan parameterized Perintah objek.
            Dim cn As New SqlConnection(strCn)        Dim cmd As New SqlCommand("INSERT INTO BLOBTest (BLOBData) " & _            "VALUES (@BLOBData)", cn)        Dim ms As MemoryStream = New MemoryStream()        picBLOB.Image.Save(ms, ImageFormat.Jpeg)        Dim bytBLOBData(ms.Length - 1) As Byte        ms.Position = 0        ms.Read(bytBLOBData, 0, ms.Length)        Dim prm As New SqlParameter("@BLOBData", SqlDbType.VarBinary, _            bytBLOBData.Length, ParameterDirection.Input, False, _            0, 0, Nothing, DataRowVersion.Current, bytBLOBData)        cmd.Parameters.Add(prm)        cn.Open()        cmd.ExecuteNonQuery()        cn.Close()					
  12. Menjalankan proyek. Klik Database untuk PictureBox untuk menampilkan gambar yang sebelumnya telah disimpan di PictureBox kontrol. Klik tombol baru ditambahkan untuk menyimpan gambar dari PictureBox ke database, dan kemudian klik Database untuk PictureBox untuk konfirmasi bahwa gambar yang disimpan dengan benar.
back to the top

Pemecahan Masalah

  • Tes ini tidak akan bekerja dengan Foto kolom di Karyawan Tabel sampel Northwind database didistribusikan dengan Access dan SQL Server. Bitmap gambar yang disimpan di Foto kolom dibungkus dengan informasi header yang dibuat oleh Visual Basic 6.0 OLE Container kontrol.
  • Jika Anda perlu untuk menggunakan akses database untuk menguji kode ini, Anda harus membuat kolom dalam tabel akses sebagai jenis OLE objek, dan menggunakan System.data.OleDb namespace dengan Microsoft Jet 4.0 penyedia bukan System.data.SqlClient namespace.
back to the top
REFERENSI
Untuk informasi tambahan tentang penggunaan BLOB data dengan Visual Basic.NET, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
308042 Bagaimana: Membaca dan menulis BLOB Data dengan menggunakan ADO.NET dengan Visual Basic.NET
316887 Bagaimana: Membaca dan menulis File ke dan dari kolom GUMPALAN dengan menggunakan ADO.NET dan Visual Basic.NET
back to the top
GUMPALAN

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 317670 - Tinjauan Terakhir: 09/24/2011 14:59:00 - Revisi: 2.0

Microsoft ADO.NET 1.1, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual Basic .NET 2003 Standard Edition

  • kbdraw kbgdi kbhowtomaster kbio kbsqlclient kbsystemdata kbmt KB317670 KbMtid
Tanggapan