Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alexandre Carmo

[Resolvido] Erro com BD

Recommended Posts

Boa noite

Pessoal eu desenvolvi uma aplicação usando com banco de dados o access, então migrei tudo para SQLServer 2008 R2, eu tinha uma função que armazenava dados usando o @@IDENTITY para trabalhar com a identificador, no access rolava normal no sqlserver esta dando essa mensagem de erro:

 

Conversion from type 'DBNull' to type 'Integer' is not valid.

 

veja o código

Public Function AddTemplate(ByRef template As TTemplate) As Long
    Dim da As New SqlDataAdapter("select * from enroll", connection)

    ' Create SQL command containing ? parameter for BLOB.
    da.InsertCommand = New SqlCommand("INSERT INTO enroll (template) Values(?)", connection)
    da.InsertCommand.CommandType = CommandType.Text
    da.InsertCommand.Parameters.Add("@template", SqlDbType.Binary, template.Size, "template")

    ' Open connection
    connection.Open()

    ' Fill DataSet.
    Dim enroll As DataSet = New DataSet
    da.Fill(enroll, "enroll")

    ' Add a new row.
    ' Create parameter for ? contained in the SQL statement.
    Dim newRow As DataRow = enroll.Tables("enroll").NewRow()
    newRow("template") = template.tpt
    enroll.Tables("enroll").Rows.Add(newRow)

    ' Include an event to fill in the Autonumber value.
    AddHandler da.RowUpdated, New SqlRowUpdatedEventHandler(AddressOf OnRowUpdated)

    ' Update DataSet.
    da.Update(enroll, "enroll")
    connection.Close()

    ' return ID
    Return newRow("ID")
  End Function

  ' Event procedure for OnRowUpdated
  Private Sub OnRowUpdated(ByVal sender As Object, ByVal args As SqlRowUpdatedEventArgs)
    ' Include a variable and a command to retrieve identity value
    ' from Access database.
    Dim newID As Integer = 0
    Dim idCMD As SqlCommand = New SqlCommand("SELECT @@IDENTITY", connection)
    ' Dim idCMD As SqlCommand = New SqlCommand("select top 1 * from enroll order by cont ID desc", connection)
    If args.StatementType = StatementType.Insert Then
      ' Retrieve identity value and store it in column
      newID = CInt(idCMD.ExecuteScalar())
      args.Row("ID") = newID
    End If
  End Sub
Então o erro aparece no método OnRowUpdated

 

na linha:

 

newID = CInt(idCMD.ExecuteScalar())

 

O que pode estar errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara achei a solução, um amigo colega do msdn passou eu estava fazendo cagada nessa linha:

 

da.InsertCommand = New SqlCommand("INSERT INTO enroll (template) Values(@template)", connection)

 

Se você olhar o modelo acima eu estava usando interrogação, é que trabalho com mysql também em outras aplicações e terminei confundindo.

 

Valeu pela força.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.