Ir para conteúdo

POWERED BY:

Arquivado

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

Caulfield

[Resolvido] Inserir dados no Firebird no VB2008

Recommended Posts

Galera é o seguinte... estou aprendendo a utilizar o Firebird.

 

Eu consgui fazer a conexão e exibiros dados no DataGridView da seguinte maneira...

 

Imports FirebirdSql.Data.FirebirdClient

Public Class Form1

    Private DA As Odbc.OdbcDataAdapter
    Private DS As DataSet

    Dim i As Integer
    Dim regs As Integer

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim myConnection As Odbc.OdbcConnection = New Odbc.OdbcConnection()
        Dim myConnectionString As String

        myConnectionString = "Dsn=TRABALHOS;Driver={Firebird/InterBase(r) driver};dbname=D:\Arquivos Disco C\ProgramaRosset\DESPROJETO.FDB;charset=NONE;uid=SYSDBA"

        myConnection.ConnectionString = myConnectionString

        Dim SQL As String = "SELECT * FROM TESTE"
        DA = New Odbc.OdbcDataAdapter(SQL, myConnection)

        DS = New DataSet

        DA.Fill(DS, "TESTE")

        Me.DataGridView1.DataSource = DS.Tables("TESTE")


    End Sub

Criei uma caixa de texto e tentei inserir os dados dela no banco e não consegui...

Ele até acrescenta os dados no DAtaGridView, mas não no banco de dados.

 

O código que estou usando é esse:

 

Dim dsNovaLinha As DataRow
dsNovaLinha = DS.Tables("TESTE").NewRow()
dsNovaLinha("NOME") = txtFirstname.Text

DS.Tables("TESTE").Rows().Add(dsNovaLinha)
DS.AcceptChanges()
DA.Update(DS, "TESTE")

O que está errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mudei o código para isso:

 

Try
            Dim Inserir As Odbc.OdbcCommandBuilder()
            Dim dsNovaLinha As DataRow

            dsNovaLinha = DS.Tables("TESTE").NewRow()

            dsNovaLinha.Item("NOME") = txtFirstname.Text
            DS.Tables("TESTE").Rows.Add(dsNovaLinha)
            DA.Update(DS, "TESTE")

        Catch ex As Exception
            MsgBox("ERRO" & vbCrLf & ex.Message)
End Try

E agora dá a seguinte mensagem de erro...

 

"A atualização requer um InsertCommand válido para transmitir coleção DataRow com novas linhas."

 

 

 

Pesquise sobre ExecuteNonQuery, faça o insert na mão, acho que será melhor.

 

Abraços...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui... tive que alterar o código pra isso:

 

Dim connetionString As String
        Dim connection As Odbc.OdbcConnection
        Dim adapter As New Odbc.OdbcDataAdapter
        Dim sql As String
        Dim NovoNome As String

        NovoNome = txtFirstname.Text
        connetionString = "Dsn=TRABALHOS;Driver={Firebird/InterBase(r) driver};dbname=D:\Arquivos Disco C\ProgramaRosset\DESPROJETO.FDB;charset=NONE;uid=SYSDBA"
        connection = New Odbc.OdbcConnection(connetionString)
        sql = "insert into TESTE (NOME) values('" & NovoNome & "')"
        Try
            connection.Open()
            adapter.InsertCommand = New Odbc.OdbcCommand(sql, connection)
            adapter.InsertCommand.ExecuteNonQuery()
            MsgBox("Row inserted !! ")
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try

Valeu pela ajuda.

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.