2017-03-11 139 views
1

有人檢查我的代碼插入圖像到數據庫中。我知道有一些錯誤,但無法弄清楚。當我運行代碼時,它的工作,但當我點擊完成按鈕,它總是說NullReferenceException這裏是我有什麼用longblob數據類型在mysql數據庫中插入圖像

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

+0

的NullReferenceException是未處理 –

回答

0

Private Sub pbStudentImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pbStudentImage.Click, txtStudentImage.Enter, txtStudentImage.Click Try Dim fileOpener As 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 
Catch ex As Exception 
     MsgBox(ex.ToString()) 
End Try 

End Sub

Private Sub btnSaveImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveImage.Click Dim con As MySqlConnection = New MySqlConnection(ConString) Dim cmd As MySqlCommand Dim fs As 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 

End Sub

Private Sub pbStudentImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pbStudentImage.Click, txtStudentImage.Enter, txtStudentImage.Click Try Dim fileOpener As 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 

Catch ex As Exception MsgBox(ex.ToString()) End Try

End Sub

Private Sub pbStudentImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pbStudentImage.Click, txtStudentImage.Enter, txtStudentImage.Click Try Dim fileOpener As 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 

Catch ex As Exception MsgBox(ex.ToString()) End Try

End Sub

Private Sub btnSaveImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveImage.Click Dim con As MySqlConnection = New MySqlConnection(ConString) Dim cmd As MySqlCommand Dim fs As FileStream Dim br As BinaryReader

+0

請格式化合作並添加一些關於此代碼的描述 - 它如何解決所描述的問題 –