Загрузка IMG в БД MySQL

denisVBNET

Здравствуйте форумчане. к проекту подключена БД MySQL в таблице есть поле для image, на форму поместил поле как PictureBox, так же openfiledialog и button. не могу понять как сделать что бы при выборе изображения в OFD оно грузилось в БД и отображалось в PictureBox. с текстовыми файлами разобрался а с этим не могу(
1 ответ

denisVBNET

Это пример для Sqlite, но для MySQL практически тоже самое
Imports System.IO
Imports Mono.Data.Sqlite
 
Namespace MonoSqlite
    Class MainClass
        Public Shared Sub Main(args As String())
            Dim sqConn As SqliteConnection = Nothing
            Dim sqComm As SqliteCommand = Nothing
            Dim fs As FileStream = Nothing
            Dim sr As StreamReader = Nothing
            Try
                sqConn = New SqliteConnection("Data Source=:memory:;Version=3;New=True;")
                ' строка соединения
                sqConn.Open()
                sqComm = sqConn.CreateCommand()
                sqComm.CommandText = "CREATE TABLE MyTable (id integer NOT NULL PRIMARY KEY AUTOINCREMENT, file blob)"
                ' создаем таблицу 
                sqComm.ExecuteNonQuery()
 
                fs = New FileStream("С:/Users/Admin/Sites/gagent/const.jpg", FileMode.Open)
                ' открываем файл
                Dim fileBuffer As Byte() = New Byte(fs.Length - 1) {}
                fs.Read(fileBuffer, 0, CInt(fs.Length))
                ' читаем в бинарный буфер
                fs.Close()
 
                sqComm.CommandText = "INSERT INTO MyTable(file) VALUES(@file)"
                ' команда добавления файла в бинарном виде
                sqComm.Parameters.Add("@file", System.Data.DbType.Binary).Value = fileBuffer
                ' записываем бинарный буфер в значение параметра
                sqComm.ExecuteNonQuery()
                ' добавляем запись в базу
                sqComm.CommandText = "SELECT file FROM MyTable"
                ' извлекаем файл
                sr = New StreamReader(New MemoryStream(DirectCast(sqComm.ExecuteScalar(), Byte()), False))
                ' читаем файл
                Console.WriteLine(sr.*********())
 
                sqConn.Close()
            Catch ex As Exception
                If sr IsNot Nothing Then
                    sr.Dispose()
                End If
                If fs IsNot Nothing Then
                    fs.Dispose()
                End If
                If sqComm IsNot Nothing Then
                    TryCast(sqComm, IDisposable).Dispose()
                End If
                If sqConn IsNot Nothing Then
                    TryCast(sqConn, IDisposable).Dispose()
                End If
                Console.WriteLine(ex)
            End Try
        End Sub
    End Class
End Namespace