Load Dan Insert Image ke MySQL BLOB dengan VB6

Sumber Dari http://heng-line.com/?p=66
MySQL memiliki fasilitas penyimpanan berupa objek gambar dengan data type BLOB. Berikut adalah contoh untuk mengakses table pada MySQL pada colom dengan data type BLOB dari Visual Basic 6 menggunakan ADODB dan Stored Procedure.

uat database MySQL, Contoh:
CREATE DATABASE contoh;

Buat Tablenya, Contoh:

CREATE TABLE pegawai (id_pegawai INT AUTO_INCREMENT, nama VARCHAR(50), foto MEDIUMBLOB);

Buat Procedure, Contoh:
DELIMITER$$
CREATE PROCEDURE pegawai_p(
pchProc CHAR(1),
pinIdPegawai INT,
pvcNama VARCHAR(50),
pmbFoto MEDIUMBLOB
)
BEGIN
/*Khusus untuk meload data berdasarkan id_pegawai tertentu*/
IF pchProc = ‘R’ THEN
SELECT id_pegawai, nama, foto FROM pegawai WHERE id_pegawai = ‘1’;
END IF;

/*Khusus untuk melakukan insert data ke table pegawai*/
IF pchProc = ‘N’ THEN
INSERT pegawai (nama, foto)
SELECT pvcNama, pmbFoto;
END IF;
END$$
DELIMITER;

Berikut adalah yang harus kita buat di Visual Basic 6

‘Tambahkan variable global pada form
PRIVATE sqlConn AS Object
PRIVATE sqlCmd AS Object
PRIVATE sqlParam AS Object
PRIVATE sqlStream AS Object

‘Berikut untuk setting koneksi dengan database MySQL menggunakan ODBC dan MySQL ODBC Connector
Dim strConn As String

strConn = “DRIVER={MySQL ODBC 3.51 Driver};SERVER=[nama_server];DATABASE=[nama_database];UID=[user_database];PWD=[Password]

Set sqlConn = CreateObject(”ADODB.Connection”)
sqlConn = GetConnection
sqlConn.CursorLocation = adUseClient

‘Berikut adalah code untuk membaca BLOB ari database dan menampilkannya pada Image control
PRIVATE FUNCTION GetData() AS Boolean

Dim rst As Object
GetData = False

‘Untuk execute data dari MySQL procedure
sqlConn.Open
Set rst = CreateObject(”ADODB.Recordset”)
Set sqlCmd = CreateObject(”ADODB.Command”)
Set Param = CreateObject(”ADODB.Parameter”)
sqlCmd.CommandType = adCmdStoredProc
sqlCmd.CommandText = “pegawai_p”
Set Param = sqlCmd.CreateParameter(”pchProc “, adChar, adParamInput, 1, “R”)
sqlCmd.Parameters.Append Param

‘Misalkan ingin menampilkan foto untuk pegawai dengan no id = 1
Set Param = sqlCmd.CreateParameter(”pinIdPegawai”, adInteger, adParamInput, , 1)
sqlCmd.Parameters.Append Param
Set Param = sqlCmd.CreateParameter(”pvcNama “, adVarChar, adParamInput, , “”)
sqlCmd.Parameters.Append Param
Set Param = sqlCmd.CreateParameter(”pmbFoto”, adBinary, adParamInput, 200000, “”)
sqlCmd.Parameters.Append Param
sqlCmd.ActiveConnection = sqlConn

On Error GoTo err:
‘Masukan hasil SELECT ke Recordset rst
Set rst.DataSource = sqlCmd.Execute
If Not rst.EOF Then

‘Gunakan ADODB.Stream sebagai media untuk menampilkan datanya dari binary ke Image Control
Set sqlStream = CreateObject(”ADODB.Stream”)
sqlStream.Type = adTypeBinary
sqlStream.Open

‘Load isi field foto dari Recordset ke ADODB.Stream
sqlStream.Write rst.Collect(”foto”)

‘Buat file sementara untuk menyimpan hasil gambar yang dibentuk oleh ADODB.Stream
sqlStream.SaveToFile App.Path & “\foto.tmp”, adSaveCreateOverWrite

‘Lalu lakukan load gambar dari file sementara ke Image Control
Image1.Picture = LoadPicture(App.Path & “\foto.tmp”)

‘Hapus kembali file sementaranya
Kill App.Path & “\foto.tmp”

Else

‘Jika tidak ada se8t Image Control dengan nilai kosong
Image1.Picture = Nothing

End If

GetData = True
sqlConn.Close

Exit Function

err:
MsgBox “Refresh Data gagal”, vbExclamation, “Konfirmasi”
sqlConn.Close

END FUNCTION

‘Gunakan CommonDialog, Button, dan Image untuk menampilkan gambarnya dari file
‘Berikut Contoh perintah pada CommandButton untuk browse image

On Error GoTo err:
With CommonDialog1
DefaultExt = “.jpg”
DialogTitle = “Browse Foto”
Filter = “JPEG|*.JPG|Bitmap|*.BMP|All Files|*.*”
.FilterIndex = 1
.CancelError = True
.Flags = FileOpenConstants.cdlOFNHideReadOnly + _
FileOpenConstants.cdlOFNCreatePrompt + _
FileOpenConstants.cdlOFNOverwritePrompt

.InitDir = “C:\”
.ShowOpen

Set sqlStream = CreateObject(”ADODB.Stream”)
sqlStream.Type = adTypeBinary
sqlStream.Open
sqlStream.LoadFromFile .FileName

If sqlStream.State = adStateOpen Then
Image1.Picture = LoadPicture(.FileName)
End If

End With

err:
EXIT

‘Berikut function untuk save data dari ADODB.Stream ke MySQL
PRIVATE FUNCTION SaveData() as Boolean
SaveData = False
sqlConn.Open
Set sqlCmd = CreateObject(”ADODB.Command”)
Set Param = CreateObject(”ADODB.Parameter”)
sqlCmd.CommandType = adCmdStoredProc
sqlCmd.CommandText = “pegawai_p”
Set Param = sqlCmd.CreateParameter(”pchProc “, adChar, adParamInput, 1, “N”)

sqlCmd.Parameters.Append Param
Set Param = sqlCmd.CreateParameter(”pinIdPegawai”, adInteger, adParamInput, , 1)
sqlCmd.Parameters.Append Param
Set Param = sqlCmd.CreateParameter(”pvcNama “, adVarChar, adParamInput, , “”)
sqlCmd.Parameters.Append Param
Set Param = sqlCmd.CreateParameter(”pmbFoto”, adBinary, adParamInput, 200000, sqlStream.Read)
sqlCmd.Parameters.Append Param
sqlCmd.ActiveConnection = sqlConn

sqlCmd.Execute

SaveData = True
sqlConn.Close

Exit Funtion

err:
MsgBox “Save Data gagal”, vbExclamation, “Konfirmasi”
sqlConn.Close

End Function

...... Yo Dicoba .......

Komentar

Postingan populer dari blog ini

Jawaban UTS MK. Sistem Operasi

Sistem Operasi