当前位置: 首页 > 知识库问答 >
问题:

如何利用VB.NET与adodb连接在mysql数据库中插入图像

胡夕
2023-03-14

我想在VB.NET2008中使用adodb连接将一个图像插入到mysql数据库中。

我正在使用一个选择查询插入数据到数据库,这里是我的代码添加或保存数据。

    rs.Open("select * from registration where Debt_ID = '" & txtDebt_ID.Text & "' ", cnn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockPessimistic)
    If rs.RecordCount = 1 Then
        MsgBox("ID already exist!", MsgBoxStyle.Exclamation, vbOK)
        rs.Close()
        cnn.Close() 

        Exit Sub
    Else

        rs.AddNew()
        rs.Fields("Debt_ID").Value = txtDebt_ID.Text
        rs.Fields("LastName").Value = txt_Lastname.Text
        rs.Fields("firstName").Value = txt_Firstname.Text
        rs.Fields("MiddleName").Value = txt_Middlename.Text
        rs.Fields("age").Value = txt_Age.Text
        rs.Fields("birthdate").Value = txt_Birthdate.Text
        rs.Fields("civil_status").Value = txtCivil_status.Text
        rs.Fields("address").Value = txt_Address.Text
        rs.Fields("occupation").Value = txt_Address.Text
        rs.Fields("contact_no").Value = txt_Contact.Text
        'rs.Fields("picture").Value = PictureBox1.Image
        rs.Save()
        rs.Close()
    End If

我想将数据库中的图像添加到字段图片中,我使用blob作为它的数据类型,我还想从数据库中检索图像并将其显示在PictureBox中...有人能帮我解决一下我的问题吗。

事先谢谢...

共有2个答案

百里鸿祯
2023-03-14

创建具有blob字段的表,如下所示

CREATE TABLE picture (
ID   INTEGER AUTO_INCREMENT,
IMAGE   BLOB, 
PRIMARY KEY (ID)
);

使用以下查询字符串插入此表:

Dim mstream As New System.IO.MemoryStream()
pic_box_save.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim arrImage() As Byte = mstream.GetBuffer()
mstream.Close()
Try
 sql = "INSERT INTO image_in_db(id, image_data) VALUES(@image_id, @image_data)"
 sql_command = New MySqlClient.MySqlCommand(sql, sql_connection)
 sql_command.Parameters.AddWithValue("@image_id", Nothing)
 sql_command.Parameters.AddWithValue("@image_data", arrImage)
 sql_command.ExecuteNonQuery()
Catch ex As Exception
 MsgBox(ex.Message)
 Exit Sub
End Try
MsgBox("Image has been saved.")
都飞跃
2023-03-14

无论使用什么数据访问技术或数据库,都需要先将am图像转换为字节,然后将其保存。检索时,将字节数组转换回图像

要保存:

Dim connection As New SqlConnection("connection string here")
Dim command As New SqlCommand("UPDATE MyTable SET Picture = @Picture WHERE ID = 1", connection)

'Create an Image object.'
Using picture As Image = Image.FromFile("file path here")
    'Create an empty stream in memory.'
    Using stream As New IO.MemoryStream
        'Fill the stream with the binary data from the Image.'
        picture.Save(stream, Imaging.ImageFormat.Jpeg)

        'Get an array of Bytes from the stream and assign to the parameter.'
        command.Parameters.Add("@Picture", SqlDbType.VarBinary).Value = stream.GetBuffer()
    End Using
End Using

connection.Open()
command.ExecuteNonQuery()
connection.Close()

要检索:

Dim connection As New SqlConnection("connection string here")
Dim command As New SqlCommand("SELECT Picture FROM MyTable WHERE ID = 1", connection)

connection.Open()

Dim pictureData As Byte() = DirectCast(command.ExecuteScalar(), Byte())

connection.Close()

Dim picture As Image = Nothing

'Create a stream in memory containing the bytes that comprise the image.'
Using stream As New IO.MemoryStream(pictureData)
    'Read the stream and create an Image object from the data.'
    picture = Image.FromStream(stream)
End Using

该示例适用于ADO.NET和SQL Server,但使用MemoryStream进行转换的原理是相同的。

 类似资料:
  • 问题内容: 我该怎么做? 我以为,我可以从数据库中读取某些内容,但是看起来太多了,是否有类似的东西? 问题答案: 您需要做的就是启动一个应用程序,如果未连接该应用程序将失败。您可以尝试的其他方法是在shell上尝试以下操作-

  • 问题内容: 我想使用Web服务在远程Web服务器上的MYSQL数据库中插入文件。 我的问题是:什么类型的表列(例如varchar等)将存储文件?对于文件,insert语句会有所不同吗? 问题答案: BLOB数据类型最适合存储文件。 请参阅:如何使用PHP将.pdf文件作为BLOB存储到MySQL中? MySQL BLOB参考手册有一些有趣的注释

  • 我正在尝试修复与MySQL数据库的连接问题。几个小时后,我的服务器意外地关闭了与MySQL数据库的连接。 这是我的错误代码: 通用域名格式。mysql。jdbc。例外。jdbc4。CommunicationsException:从服务器成功接收到的最后一个数据包是37521865毫秒前。最后一个成功发送到服务器的数据包是37521865毫秒前。长于服务器配置的“等待超时”值。在应用程序中使用之前,

  • 问题内容: 我想在我的MySQL数据库中插入整数188和90,但以下代码不起作用: 为什么不起作用? 问题答案: 编辑 为我工作: 在MySQL表;

  • 我使用的是ubuntu系统和Mysql 8.0。我试图用jdbc类连接数据库,但出现了一个错误,尽管我添加了mysql连接器。jar文件, 我在下面提到的错误-- JAVAlang.module。FindException:读取模块:/home/surya/eclipse workspace/Advancedjava/bin时出错,原因是:java。lang.module。InvalidModul

  • 我想在Jaspersoft Studio中的报表中的详细信息带中插入来自数据库的图像。 JPG图像保存在MySQL中的longblob类型的imgdata字段中。 我试图将此表达式放在Image元素中: 在第一种情况下,我得到以下错误: ...在第二种情况下,这个错误是: 我的问题是:如何将数据库中的图像插入到JasperReports的报表中?