2014-10-11 106 views
-1

我是vb.net 2010中的新手,我在更新數據到mysql數據庫時出現異常錯誤我不知道發生了什麼,我無法解決問題。這裏是我的代碼:從字符串「SystemNullReferenceException:O」到字符串「Integer」的轉換無效

Private sub updateData() 
    Dim path As String = "IMAGES/" 
    Dim reg As String = 1 

     dbcon.Close() ' This will close any open connection 
     con = "server=localhost; uid=root;pwd=;database=myDatabase;" 

     Try 
      dbcon.ConnectionString = con 
      dbcon.Open() 
      sql = "update t_table1 set data1='" & data1.Text & "',data2='" & data2.Text & "',"',reg='" & reg & "' where id='" & id.text & "';" 

      dbcom = New MySqlCommand(sql, dbcon) 
      dbcom.ExecuteNonQuery() 

       Try 
        If Not Directory.Exists(path) Then 
         'This will create a directory "IMAGE" 
         Dim di As DirectoryInfo = Directory.CreateDirectory(path) 
        End If 

        If Not PictureBox1.Image Is Nothing Then 
         'If the picturebox contain an image then it will save into "IMAGE"directory 
         PicCopy.Save(String.Concat(path, id.Text, ".png")) 
        Else 

        End If 
       Catch ex As Exception 
        MsgBox("The process failed: ", ex.ToString()) 
       End Try 

      MsgBox("Records Successfully Update!", MsgBoxStyle.Information) 
      dbcon.Close() 
     Catch ex As Exception 
      MsgBox("Unable to update data. Error is " & ex.Message) 
      dbcon.Close() 
      Exit Sub 
     End Try 
End Sub 

我所試圖做的是:

  1. 關閉連接,如果有任何打開的
  2. ,然後打開我的數據庫
  3. 更新一個新的連接'data1'和'data2'其中id =「id.text texbox的值」
  4. 檢查「IMAGE」目錄是否存在,如果沒有創建
  5. 檢查if picturebox2包含一個圖像,如果包含然後保存圖像ITO「形象」目錄中的「id.text texbox」的名字,並以「png格式」
  6. 關閉進行連接
  7. 文件擴展名

但我每次調用這個函數,我的數據時間更新,但其給我一個異常錯誤說:

無法更新數據。錯誤是轉換形式字符串「SystemNullReferenceException:O」鍵入「整數」無效。

+0

您的SQL查詢**過時**。閱讀此:[如何創建參數化的SQL查詢?爲什麼我應該?](http://stackoverflow.com/questions/542510/how-do-i-create-a-parameterized-sql-query-why-should-i)和這個:[給我參數化的SQL,或者給我死亡](http://blog.codinghorror.com/give-me-parameterized-sql-or-give-me-death/)。 – 2014-10-11 07:46:19

回答

0

確定。現在我解決了自己的問題,之所以總是說從字符串等轉換錯誤是因爲保存圖像是錯誤的,並且當通過try和catch函數捕獲錯誤時,它總是在說因爲這一行而導致轉換錯誤: MsgBox("The process failed: ", ex.ToString())我把它變成MsgBox("The process failed: "& ex.message)並沒有錯誤彈出,但圖像沒有保存,所以我做了一個更好的辦法,首先我CAL功能:

Private sub updateData() 
    Dim reg As String = 1 

     dbcon.Close() ' This will close any open connection 
     con = "server=localhost; uid=root;pwd=;database=myDatabase;" 

     Try 
      dbcon.ConnectionString = con 
      dbcon.Open() 

      sql = "update t_table1 set data1='" & data1.Text & "',data2='" & data2.Text & "',"',reg='" & reg & "' where id='" & id.text & "';" 

      dbcom = New MySqlCommand(sql, dbcon) 
      dbcom.ExecuteNonQuery() 

      dbcon.Close() 
     Catch ex As Exception 
      MsgBox("Unable to update data. Error is " & ex.Message) 
      dbcon.Close() 
      Exit Sub 
     End Try 

     updateImage()' call this to properly create directory and save the image 
End Sub 

我犯了一個新的功能「updateImage()」創建目錄並保存新圖像

Private sub updateImage() 
    Dim PicCopy As Image 
    Dim path As String = "IMAGES/" 
     Try 
      If Not Directory.Exists(path) Then 
         'This will create a directory "IMAGE" 
         Dim di As DirectoryInfo = Directory.CreateDirectory(path) 
        End If 

        If Not PictureBox1.Image Is Nothing Then 
         'If the picturebox contain an image then it will save into "IMAGE"directory 
         PicCopy.Save(String.Concat(path, id.Text, ".png")) 
        Else 

        End If 
       Catch ex As Exception 
        MsgBox("The process failed: " & ex.Message) 
       End Try 

      MsgBox("Records Successfully Update!", MsgBoxStyle.Information) 
End Sub 

然後它工作正常。並沒有錯誤。 謝謝!即使我解決了我自己的問題。

0

是否讓你的表更新,並且這個函數會保存圖像到指定的目錄,即使發生異常...... ?? 我覺得你已經給出了MySQL查詢的問題here.try

sql = "update t_table1 set data1='" & data1.Text & "',data2='" & data2.Text & "',reg='" & reg & "' where id='" & id.text & "';" 

只是給一個嘗試,因爲我還沒有測試一樣......

+0

謝謝。在查詢中沒有任何問題,我已經在mysql命令行和vb.net中嘗試了它,它工作正常,我認爲我的問題是在圖像保存,但我不知道如何修復。 – Polar 2014-10-11 07:43:03

+0

我嘗試刪除我的代碼中的這一行 'PicCopy.Save(String.Concat(path,id.Text,「)。png「))' 並且沒有發生錯誤異常,所以也許這行是我的問題, 這一行是爲了將圖像保存到」IMAGE /「目錄。 – Polar 2014-10-11 07:45:22

相關問題