Menyimpan dan Menampilkan Gambar di MySQL

Posted by Kamarudin • 2 minute read • Comments

Ternyata masih ada sebagian om2x :grin: yang masih kesulitan untuk melakukan hal ini, tapi oke lah berhubung udah lama enggax posting kayaxnya enggak salah juga membahas permasalahan yang satu ini.

Dengan asumsi MySQL dan Visual Basic .NET sudah terinstall dengan baik hal selanjutnya yang perlu disiapkan adalah MySQL Connector/Net, disini saya menggunakan versi 6.2.4

Jadi silahkan download kemudian lakukan instalasi.

Selanjutnya kita akan menyiapkan sebuah tabel, misal dengan nama mahasiswa dengan struktur seperti berikut :

CREATE TABLE mahasiswa (
    npm VARCHAR(10),
    nama VARCHAR(50),
    foto MEDIUMBLOB
)

Gimana udah selesai ? Klo udah kita lanjutkan dengan membuat project baru kemudian tambahkan referensi MySql.Data (menu Project -> Add Reference…)

Apakah udah cukup ? Belum tambahkan juga namespace (package klo istilah javanya) MySql.Data pada bagian paling atas kode program

Perintah diatas berguna untuk menyingkat penulisan kode program contoh :

Private conn As New MySql.Data.MySqlClient.MySqlConnection

bisa disingkat menjadi

Private conn As New MySqlClient.MySqlConnection

Selanjutnya kita akan desain tampilan program seperti gambar dibawah ini

]({: .align-center}

komponen yang yang dibutuhkan 1 buah PictureBox dan 2 buah Button.

Melakukan koneksi

Nah cara yang paling gampang kita tempatkan aja kodenya dibagian constructor

Private conn As New MySqlClient.MySqlConnection
Private strSql As String = String.Empty

Public Sub New()

    ' This call is required by the Windows Form Designer.
    InitializeComponent()

    ' Add any initialization after the InitializeComponent() call.

    ' kode untuk melakukan koneksi mulai dari sini
    Dim strConn As String = "server=127.0.0.1;uid=root;pwd=rahasia;database=test"
    conn.ConnectionString = strConn
    conn.Open()

End Sub

Klo kelupaan lokasi constructornya dimana :grin:, caranya lihat gambar :

Meyimpan gambar

Kodenya sederhana banget, kita lihat cuplikannya

Private Sub btnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSimpan.Click
    ' untuk contoh disini lokasi gambarnya saya hardcode
    ' kita bisa kembangkan dengan memanfaatkan komponen OpenFileDialog
    Dim fileName As String = "E:\Gambar\k4m4r82.jpg"

    strSql = "INSERT INTO mahasiswa (npm, nama, foto) VALUES (@1, @2, @3)" ' ini perintah insert biasa
    Using cmd As New MySqlClient.MySqlCommand(strSql, conn)
        With cmd
            .Parameters.Clear()
            .Parameters.AddWithValue("@1", "02.02.4114") ' npm
            .Parameters.AddWithValue("@2", "Kamarudin") ' nama
            .Parameters.AddWithValue("@3", IO.File.ReadAllBytes(fileName)) ' foto

            .ExecuteNonQuery()
        End With
    End Using

    MessageBox.Show("Data sudah disimpan", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub

Menampilkan gambar

Private Sub btnTampil_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTampil.Click
    strSql = "SELECT foto FROM mhs WHERE npm = @1"

    Using cmd As New MySqlClient.MySqlCommand(strSql, conn)
        With cmd
            .Parameters.Clear()
            .Parameters.AddWithValue("@1", "02.02.4114") ' npm

            Using dtr As MySqlClient.MySqlDataReader = .ExecuteReader()
                If dtr.HasRows Then
                    If dtr.Read() Then
                        Dim ms As New IO.MemoryStream(CType(dtr.Item("foto"), Byte()))
                        PictureBox1.Image = Image.FromStream(ms) ' tampilkan gambarnya
                    End If
                End If
            End Using
        End With
    End Using
End Sub

Selamat mencoba :blush:

Comments