Pages

Wednesday 14 March 2012

Menyimpan dan Menampilkan Gambar di MySQL

Ternyata masih ada sebagian om2x :D 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 :
1CREATE TABLE mahasiswa (
2    npm VARCHAR(10),
3    nama VARCHAR(50),
4    foto MEDIUMBLOB
5)

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 :
1Private conn As New MySql.Data.MySqlClient.MySqlConnection
bisa disingkat menjadi
1Private conn As New MySqlClient.MySqlConnection
Selanjutnya kita akan desain tampilan program seperti gambar dibawah ini

komponen yang yang dibutuhkan 1 buah PictureBox dan 2 buah Button.
Melakukan koneksi
Nah cara yang paling gampang kita tempatkan aja kodenya dibagian constructor
01Private conn As New MySqlClient.MySqlConnection
02Private strSql As String = String.Empty
03 
04Public Sub New()
05 
06    ' This call is required by the Windows Form Designer.
07    InitializeComponent()
08 
09    ' Add any initialization after the InitializeComponent() call.
10 
11    ' kode untuk melakukan koneksi mulai dari sini
12    Dim strConn As String = "server=127.0.0.1;uid=root;pwd=rahasia;database=test"
13    conn.ConnectionString = strConn
14    conn.Open()
15 
16End Sub
Klo kelupaan lokasi constructornya dimana :D , caranya lihat gambar :

Meyimpan gambar
Kodenya sederhana banget, kita lihat cuplikannya
01Private Sub btnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSimpan.Click
02    ' untuk contoh disini lokasi gambarnya saya hardcode
03    ' kita bisa kembangkan dengan memanfaatkan komponen OpenFileDialog
04    Dim fileName As String = "E:\Gambar\k4m4r82.jpg"
05 
06    strSql = "INSERT INTO mahasiswa (npm, nama, foto) VALUES (@1, @2, @3)" ' ini perintah insert biasa
07    Using cmd As New MySqlClient.MySqlCommand(strSql, conn)
08        With cmd
09            .Parameters.Clear()
10            .Parameters.AddWithValue("@1", "02.02.4114") ' npm
11            .Parameters.AddWithValue("@2", "Kamarudin") ' nama
12            .Parameters.AddWithValue("@3", IO.File.ReadAllBytes(fileName)) ' foto
13 
14            .ExecuteNonQuery()
15        End With
16    End Using
17 
18    MessageBox.Show("Data sudah disimpan", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information)
19End Sub
Menampilkan gambar
01Private Sub btnTampil_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTampil.Click
02    strSql = "SELECT foto FROM mhs WHERE npm = @1"
03 
04    Using cmd As New MySqlClient.MySqlCommand(strSql, conn)
05        With cmd
06            .Parameters.Clear()
07            .Parameters.AddWithValue("@1", "02.02.4114") ' npm
08 
09            Using dtr As MySqlClient.MySqlDataReader = .ExecuteReader()
10                If dtr.HasRows Then
11                    If dtr.Read() Then
12                        Dim ms As New IO.MemoryStream(CType(dtr.Item("foto"), Byte()))
13                        PictureBox1.Image = Image.FromStream(ms) ' tampilkan gambarnya
14                    End If
15                End If
16            End Using
17        End With
18    End Using
19End Sub

Selamat mencoba :)

1 comment:

  1. antara
    (https://coding4ever.wordpress.com/2011/03/15/menyimpan-dan-menampilkan-gambar-di-mysql/)
    dan
    (http://sectorilmu.blogspot.co.id/2012/03/menyimpan-dan-menampilkan-gambar-di.html)
    entah yang mana diantara kalian berdua yang copy paste!?..

    ReplyDelete