Trik tersebut saya ikuti dari situs mysql lupa link yang mana, entah kenapa saya muter muter nyari solusi kok ga ada yang menjelaskan secara sederhana cara loading ini, untungnya ada yang mau menjelaskan di situs stackoverflow tapi tetep saja caranya muter dan ribet berikut cara saya yang simpel untuk saving gambar dan loading lagi
Secara singkat, saya punya tabel "tuser" dengan kolom nama dan foto, tipe nama itu varchar, dan foto adalah mediumblob, untuk bisa jalan set dulu conn dengan koneksi mysqlnya [mysqlconnection] dan "Imports MySql.Data.MySqlClient" di header file vb
conn di set saat login dengan setting sebagai berikut :
connStr = String.Format["server={0};user id={1}; password={2}; database={3}; pooling=false; Allow Zero Datetime=true;default Command Timeout=60; ", txtServer.Text, txtUser.Text, txtPassword.Text, txtDatabase.Text]
conn = New MySqlConnection[connStr]
Selanjutnya, untuk penyimpanan gambar ke blob, adalah
Private Sub SaveGambar[ByVal namanya As String]
Dim cmd As New MySqlCommand
Dim SQL As String
Dim FileSize As UInt32
Dim rawData[] As Byte
Dim fs As FileStream
Try
fs = New FileStream[namafilefoto, FileMode.Open, FileAccess.Read]
FileSize = fs.Length
rawData = New Byte[FileSize] {}
fs.Read[rawData, 0, FileSize]
fs.Close[]
fs.Dispose[]
SQL = "update tuser set foto = @File where nama = '" + namanya + "'"
cmd.Connection = conn
cmd.CommandText = SQL
cmd.Parameters.AddWithValue["@File", rawData]
cmd.ExecuteNonQuery[]
Catch ex As Exception
MessageBox.Show["There was an error: " & ex.Message, "Error", _
MessageBoxButtons.OK, MessageBoxIcon.Error]
End Try
End Sub
Dan untuk loading lagi nya
Private Sub LoadGambar[ByVal namanya As String]
Dim myData As MySqlDataReader
Dim SQL As String
Try
PictureBox1.Image = Nothing
SQL = "SELECT foto FROM tuser where nama = '" + namanya + "' limit 1"
Dim cmd As New MySqlCommand[SQL, conn]
myData = cmd.ExecuteReader
While myData.Read[]
Dim Byted[] As Byte = myData.Item["foto"]
Dim Streamed As New System.IO.MemoryStream[Byted]
PictureBox1.Image = Image.FromStream[Streamed]
Streamed.Close[]
End While
myData.Close[]
cmd.Dispose[]
Catch ex As Exception
MessageBox.Show["There was an error: " & ex.Message, "Error", _
MessageBoxButtons.OK, MessageBoxIcon.Error]
End Try
End Sub
Silakan dibandingkan dengan yang stackoverflow, walaupun ide bukan dari saya, tapi sepertinya yang saya tulis lebih simple, dan mudah dipahami, semoga berguna...
Cara untuk insert/update/view [menyimpan/mengubah/menampilkan] file biner pada MySQL adalah sebagai berikut.
Struktur database MySQL contoh nya kita beri nama tabel “file_attachment”, sebagai berikut:
Copy paste pada tools MySQL Administrasi Anda, seperti phpmyadmin.
1
2
3
4
5
6
7
8
CREATE TABLE IF NOT EXISTS `file_attachment` [
`id` bigint[20] NOT NULL auto_increment,
`file_content` mediumblob NOT NULL,
`file_name` varchar[255] NOT NULL,
`file_type` varchar[255] NOT NULL,
`file_size` bigint[20] NOT NULL default '0',
PRIMARY KEY [`id`]
] ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Untuk Insert Script nya adalah sbb.:
Beri nama file insert_blob.php [hanya contoh].
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Untuk menampilkan File dari BLOB, menggunakan 2 file, file pertama adalah sebagai berikut:
Beri nama file view_blob.php [hanya contoh].
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19