Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyimpan dan Mengambil Imej dengan Cekap dalam Pangkalan Data MySQL?

Bagaimana untuk Menyimpan dan Mengambil Imej dengan Cekap dalam Pangkalan Data MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-11-29 18:15:11310semak imbas

How to Efficiently Store and Retrieve Images in a MySQL Database?

Menyimpan dan Mendapatkan Imej dalam Pangkalan Data

Pengenalan

Artikel ini menangani cabaran menyimpan dan mendapatkan semula imej daripada pangkalan data. Kod awal yang diberikan menghadapi masalah, mendorong pemeriksaan yang lebih mendalam dan penyelesaian yang berjaya.

Menyimpan Imej ke Pangkalan Data

Coretan kod menunjukkan cara menyimpan imej daripada PictureBox (PbPicture) ke Pangkalan data MySQL:

    Dim filename As String = txtName.Text + ".jpg"
    Dim FileSize As UInt32

    conn.Close()

    Dim mstream As New System.IO.MemoryStream()
    PbPicture.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
    Dim arrImage() As Byte = mstream.GetBuffer()

    FileSize = mstream.Length
    Dim sqlcmd As New MySqlCommand
    Dim sql As String = "insert into [your table]  (picture, filename, filesize) " & _
                           "VALUES(@File, @FileName, @FileSize)"

    Try
        conn.Open()
        With sqlcmd
            .CommandText = sql
            .Connection = conn
            .Parameters.AddWithValue("@FileName", filename)
            .Parameters.AddWithValue("@FileSize", FileSize)
            .Parameters.AddWithValue("@File", arrImage)

            .ExecuteNonQuery()
        End With
    Catch ex As Exception
        MsgBox(ex.Message)
    Finally
        conn.Close()
    End Try

Mendapatkan Imej daripada Pangkalan Data

Untuk mendapatkan semula imej daripada pangkalan data dan paparkannya dalam PictureBox (PbPicture), ikut langkah berikut:

    Dim adapter As New MySqlDataAdapter
    adapter.SelectCommand = Cmd

    data = New DataTable

    adapter = New MySqlDataAdapter("select picture from [yourtable]", conn)

Nota: Pastikan pertanyaan mengembalikan hanya satu rekod kerana hanya satu PictureBox boleh memaparkan imej tunggal pada satu masa.

    commandbuild = New MySqlCommandBuilder(adapter)
    adapter.Fill(data)

    Dim lb() As Byte = data.Rows(0).Item("picture")
    Dim lstr As New System.IO.MemoryStream(lb)
    PbPicture.Image = Image.FromStream(lstr)
    PbPicture.SizeMode = PictureBoxSizeMode.StretchImage
    lstr.Close()

Atas ialah kandungan terperinci Bagaimana untuk Menyimpan dan Mengambil Imej dengan Cekap dalam Pangkalan Data MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn