2016-06-21 8 views
0

Hier ist der Code:Fehler beim Parameterwert aus einem String in ein Int32 konvertieren beim Versuch hinzuzufügen ist, einen Wert zu einer SQL-Datenbank

Private m_cn As New SqlConnection 
Private m_DA As SqlDataAdapter 
Private m_CB As SqlCommandBuilder 
Private m_DataTable As New DataTable 
Private m_intRowPosition As Integer = 0 


Private Sub InsertDatabaseItem_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    m_cn.ConnectionString = "Data Source=TREVOR-PC\SQLSERVEREXPRESS;Initial Catalog=Milk Convience Products;Integrated Security=True" 

    m_cn.Open() 
    m_DA = New SqlDataAdapter("Select * From ProductIndex", m_cn) 
    m_CB = New SqlCommandBuilder(m_DA) 

    txtBarcode.Focus() 

End Sub 

Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click 
    Dim cmd As New SqlCommand(("INSERT INTO ProductIndex VALUES(" & 
           "@ID," & 
           "@Name," & 
           "@Price," & 
           "@Desc)" & 
           "@Barcode)"), m_cn) 

    cmd.Parameters.Add("@ID", SqlDbType.Int) 
    cmd.Parameters("@ID").Value = txtID.Text 
    cmd.Parameters.Add("@Name", SqlDbType.VarChar) 
    cmd.Parameters("@Name").Value = txtName.Text 
    cmd.Parameters.Add("@Price", SqlDbType.Money) 
    cmd.Parameters("@Price").Value = txtPrice.Text 
    cmd.Parameters.Add("@Desc", SqlDbType.VarChar) 
    cmd.Parameters("@Desc").Value = txtDesc.Text 
    cmd.Parameters.Add("@Barcode", SqlDbType.BigInt) 
    cmd.Parameters("@Barcode").Value = txtBarcode.Text 

    cmd.ExecuteNonQuery() 

    MsgBox("Success!", MsgBoxStyle.Information, "SUCCESS") 

    Me.Hide() 

    txtID.Clear() 
    txtName.Clear() 
    txtPrice.Clear() 
    txtDesc.Clear() 
    txtBarcode.Clear() 

    m_cn.Close() 
    m_cn.Dispose() 
End Sub 


Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click 
    Me.Hide() 
End Sub 

Nachdem ich die btnOK klicken, um eine neue Datenbank Punkt einzusteigen, eine Ausnahme auftritt, und es heißt: Fehler beim Konvertieren des Parameterwertes von einem String in einen Int32.

habe ich einige Debugging und festgestellt, dass der Fehler nach der auftritt „cmd.Parameters (“ @ Barcode „). Value = txtBarcode.Text“ Codezeile

Antwort

1
cmd.Parameters.Add("@Barcode", SqlDbType.BigInt) 
cmd.Parameters("@Barcode").Value = txtBarcode.Text 

Sie versuchen, die txtBarcode zu werfen .Text als große Ganzzahl. Dies sollte durch explizites Konvertieren des Werts erfolgen. Wahrscheinlich ist Ihr Testfall eine leere Zeichenfolge oder ein anderer Zeichenfolgenwert, der nicht konvertiert werden kann.

Bitte wiederholen Sie Ihren Code Dies ist wahrscheinlich auch ein Problem für ID und Preis-Parameter.

Verwandte Themen