2016-06-21 2 views
0

Вот код:Не удалось преобразовать значение параметра из строки к Int32 при попытке добавить значение в базу данных SQL

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 

После нажатия на btnOK ввести новый элемент базы данных, происходит исключение и он говорит: Не удалось преобразовать значение параметра из строки в Int32.

Я сделал некоторые отладки и обнаружил, что ошибка происходит после «cmd.Parameters (» @ Штрих-код «). Value = txtBarcode.Text» строка кода

ответ

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

Вы пытаетесь бросить txtBarcode .Text как большое целое число. Это должно быть сделано путем явного преобразования значения. Вероятно, ваш тестовый пример представляет собой пустую строку или другое строковое значение, которое невозможно преобразовать.

Обратите внимание на повторное чтение кода, это, вероятно, также является проблемой для параметров Id и Price.

Смежные вопросы