使用 longblob 数据类型在 mysql 数据库中插入图像
Inserting images in mysql database with a longblob data type
有人检查了我将图像插入 database.I 的代码,知道有一些错误,但无法理解 out.When 我 运行 代码有效,但是当我单击完成时按钮总是显示 NullReferenceException
这是我得到的
Imports MySql.Data.MySqlClient
Imports System.IO
Public Class adminreg
Dim con As MySqlConnection
Dim cmd As MySqlCommand
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim reader As MySqlDataReader
Dim mstream As New System.IO.MemoryStream
PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim arrImage() As Byte = mstream.GetBuffer()
mstream.Close()
con = New MySqlConnection
con.ConnectionString = "server=localhost;userid=root;password=1234;database=dat"
Try
con.Open()
Dim query As String
query = "insert into dat.login (idlogin,user,password,name,position,ownpic) values ('" & id.Text & "','" & usertxt.Text & "','" & passtxt.Text & "','" & nmetxt.Text & "','" & postxt.Text & "',@ownpic)"
cmd.Parameters.AddWithValue("@ownpic", arrImage)
cmd = New MySqlCommand(query, con)
reader = cmd.ExecuteReader
MessageBox.Show("Data Saved")
con.Close()
Catch ex As MySqlException
MessageBox.Show(ex.Message)
Finally
con.Dispose()
End Try
End Sub
Private Sub adminreg_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
OpenFileDialog1.Filter = "imahe lang (*.jpg, *.bmp, *.png) | *.jpg; *.bmp; *.png| all files (*.*) | *.*"
If OpenFileDialog1.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName)
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Login.Show()
Me.Hide()
End Sub
End Class
非常感谢任何建议谢谢...只是 VB.net
的初学者
Private Sub pbStudentImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 句柄 pbStudentImage.Click, txtStudentImage.Enter, txtStudentImage.Click
尝试
将 fileOpener 调暗为 OpenFileDialog = New OpenFileDialog()
fileOpener.Filter = "Image files | *.jpg"</p>
<pre><code> If fileOpener.ShowDialog() = Windows.Forms.DialogResult.OK Then
pbStudentImage.Image = Image.FromFile(fileOpener.FileName)
txtStudentImage.Text = fileOpener.FileName
End If
Catch ex As Exception
MsgBox(ex.ToString())
End Try
结束子
Private Sub btnSaveImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveImage.Click
Dim con 作为 MySqlConnection = New MySqlConnection(ConString)
将 cmd 调暗为 MySqlCommand
将 fs 调暗为 FileStream
Dim br As BinaryReader
Try
If txtFirstName.Text.Length > 0 And txtStudentImage.Text.Length > 0 Then
Dim FileName As String = txtStudentImage.Text
Dim ImageData() As Byte
fs = New FileStream(FileName, FileMode.Open, FileAccess.Read)
br = New BinaryReader(fs)
ImageData = br.ReadBytes(CType(fs.Length, Integer))
br.Close()
fs.Close()
Dim CmdString As String = "INSERT INTO Students(FirstName, LastName, Image, Address) VALUES(@FirstName, @LastName, @Image, @Address)"
cmd = New MySqlCommand(CmdString, con)
cmd.Parameters.Add("@FirstName", MySqlDbType.VarChar, 45)
cmd.Parameters.Add("@LastName", MySqlDbType.VarChar, 45)
cmd.Parameters.Add(";@Image", MySqlDbType.Blob)
cmd.Parameters.Add("@Address", MySqlDbType.VarChar, 100)
cmd.Parameters("@FirstName").Value = txtFirstName.Text
cmd.Parameters("@LastName").Value = txtLastName.Text
cmd.Parameters("@Image").Value = ImageData
cmd.Parameters("@Address").Value = txtAddress.Text
con.Open()
Dim RowsAffected As Integer = cmd.ExecuteNonQuery()
If (RowsAffected > 0) Then
MsgBox("Image saved successfully!")
End If
con.Close()
Else
MsgBox("Incomplete data!", MsgBoxStyle.Critical, "")
End If
Catch ex As Exception
MsgBox(ex.ToString())
Finally
If con.State = ConnectionState.Open Then
con.Close()
End If
End Try
结束子
Private Sub pbStudentImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 句柄 pbStudentImage.Click, txtStudentImage.Enter, txtStudentImage.Click
尝试
将 fileOpener 调暗为 OpenFileDialog = New OpenFileDialog()
fileOpener.Filter = "Image files | *.jpg"
If fileOpener.ShowDialog() = Windows.Forms.DialogResult.OK Then
pbStudentImage.Image = Image.FromFile(fileOpener.FileName)
txtStudentImage.Text = fileOpener.FileName
End If
将 ex 作为异常捕获
MsgBox(ex.ToString())
结束尝试
结束子
Private Sub pbStudentImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 句柄 pbStudentImage.Click, txtStudentImage.Enter, txtStudentImage.Click
尝试
将 fileOpener 调暗为 OpenFileDialog = New OpenFileDialog()
fileOpener.Filter = "Image files | *.jpg"
If fileOpener.ShowDialog() = Windows.Forms.DialogResult.OK Then
pbStudentImage.Image = Image.FromFile(fileOpener.FileName)
txtStudentImage.Text = fileOpener.FileName
End If
将 ex 作为异常捕获
MsgBox(ex.ToString())
结束尝试
结束子
Private Sub btnSaveImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveImage.Click
Dim con 作为 MySqlConnection = New MySqlConnection(ConString)
将 cmd 调暗为 MySqlCommand
将 fs 调暗为 FileStream
Dim br As BinaryReader
有人检查了我将图像插入 database.I 的代码,知道有一些错误,但无法理解 out.When 我 运行 代码有效,但是当我单击完成时按钮总是显示 NullReferenceException
这是我得到的
Imports MySql.Data.MySqlClient
Imports System.IO
Public Class adminreg
Dim con As MySqlConnection
Dim cmd As MySqlCommand
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim reader As MySqlDataReader
Dim mstream As New System.IO.MemoryStream
PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim arrImage() As Byte = mstream.GetBuffer()
mstream.Close()
con = New MySqlConnection
con.ConnectionString = "server=localhost;userid=root;password=1234;database=dat"
Try
con.Open()
Dim query As String
query = "insert into dat.login (idlogin,user,password,name,position,ownpic) values ('" & id.Text & "','" & usertxt.Text & "','" & passtxt.Text & "','" & nmetxt.Text & "','" & postxt.Text & "',@ownpic)"
cmd.Parameters.AddWithValue("@ownpic", arrImage)
cmd = New MySqlCommand(query, con)
reader = cmd.ExecuteReader
MessageBox.Show("Data Saved")
con.Close()
Catch ex As MySqlException
MessageBox.Show(ex.Message)
Finally
con.Dispose()
End Try
End Sub
Private Sub adminreg_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
OpenFileDialog1.Filter = "imahe lang (*.jpg, *.bmp, *.png) | *.jpg; *.bmp; *.png| all files (*.*) | *.*"
If OpenFileDialog1.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName)
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Login.Show()
Me.Hide()
End Sub
End Class
非常感谢任何建议谢谢...只是 VB.net
的初学者
Private Sub pbStudentImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 句柄 pbStudentImage.Click, txtStudentImage.Enter, txtStudentImage.Click
尝试
将 fileOpener 调暗为 OpenFileDialog = New OpenFileDialog()
fileOpener.Filter = "Image files | *.jpg"</p>
<pre><code> If fileOpener.ShowDialog() = Windows.Forms.DialogResult.OK Then
pbStudentImage.Image = Image.FromFile(fileOpener.FileName)
txtStudentImage.Text = fileOpener.FileName
End If
Catch ex As Exception
MsgBox(ex.ToString())
End Try
结束子
Private Sub btnSaveImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveImage.Click Dim con 作为 MySqlConnection = New MySqlConnection(ConString) 将 cmd 调暗为 MySqlCommand 将 fs 调暗为 FileStream Dim br As BinaryReader
Try
If txtFirstName.Text.Length > 0 And txtStudentImage.Text.Length > 0 Then
Dim FileName As String = txtStudentImage.Text
Dim ImageData() As Byte
fs = New FileStream(FileName, FileMode.Open, FileAccess.Read)
br = New BinaryReader(fs)
ImageData = br.ReadBytes(CType(fs.Length, Integer))
br.Close()
fs.Close()
Dim CmdString As String = "INSERT INTO Students(FirstName, LastName, Image, Address) VALUES(@FirstName, @LastName, @Image, @Address)"
cmd = New MySqlCommand(CmdString, con)
cmd.Parameters.Add("@FirstName", MySqlDbType.VarChar, 45)
cmd.Parameters.Add("@LastName", MySqlDbType.VarChar, 45)
cmd.Parameters.Add(";@Image", MySqlDbType.Blob)
cmd.Parameters.Add("@Address", MySqlDbType.VarChar, 100)
cmd.Parameters("@FirstName").Value = txtFirstName.Text
cmd.Parameters("@LastName").Value = txtLastName.Text
cmd.Parameters("@Image").Value = ImageData
cmd.Parameters("@Address").Value = txtAddress.Text
con.Open()
Dim RowsAffected As Integer = cmd.ExecuteNonQuery()
If (RowsAffected > 0) Then
MsgBox("Image saved successfully!")
End If
con.Close()
Else
MsgBox("Incomplete data!", MsgBoxStyle.Critical, "")
End If
Catch ex As Exception
MsgBox(ex.ToString())
Finally
If con.State = ConnectionState.Open Then
con.Close()
End If
End Try
结束子
Private Sub pbStudentImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 句柄 pbStudentImage.Click, txtStudentImage.Enter, txtStudentImage.Click 尝试 将 fileOpener 调暗为 OpenFileDialog = New OpenFileDialog() fileOpener.Filter = "Image files | *.jpg"
If fileOpener.ShowDialog() = Windows.Forms.DialogResult.OK Then
pbStudentImage.Image = Image.FromFile(fileOpener.FileName)
txtStudentImage.Text = fileOpener.FileName
End If
将 ex 作为异常捕获 MsgBox(ex.ToString()) 结束尝试
结束子
Private Sub pbStudentImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 句柄 pbStudentImage.Click, txtStudentImage.Enter, txtStudentImage.Click 尝试 将 fileOpener 调暗为 OpenFileDialog = New OpenFileDialog() fileOpener.Filter = "Image files | *.jpg"
If fileOpener.ShowDialog() = Windows.Forms.DialogResult.OK Then
pbStudentImage.Image = Image.FromFile(fileOpener.FileName)
txtStudentImage.Text = fileOpener.FileName
End If
将 ex 作为异常捕获 MsgBox(ex.ToString()) 结束尝试
结束子
Private Sub btnSaveImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveImage.Click Dim con 作为 MySqlConnection = New MySqlConnection(ConString) 将 cmd 调暗为 MySqlCommand 将 fs 调暗为 FileStream Dim br As BinaryReader