GRAVAR REGISTRO DE UM DATASET NO BANCO DE DADOS
Olá pessoal.
Estou tentando inserir registro no banco de dados através de um dataset, só que não estou conseguindo o pior que também não gera erro, dessa forma não consigo identificar o que preciso corrigir, fiz varias pesquisas tentei vários exemplos, só que os mesmos não são inseridos os registros, mas também não da erro, veja abaixo os códigos que estou utilizando.
A tabela no meu banco de dados e formada por seis colunas, sendo que chave primaria é do tipo inteiro incrementada automaticamente no meu banco de dados
Função para criar meu dataset, que está funcionando normalmente, não estou criando o campo Id auto incremento, mas também tentei criando não deu certo.
Public Function criarTblAcesso() As DataSet
Dim ds As New DataSet
ds.Tables.Add([Ô]tblAcessos[Ô])
ds.Tables(0).Columns.Add([Ô]Loguin[Ô], GetType(String))
ds.Tables(0).Columns.Add([Ô]Aplicativo[Ô], GetType(String))
ds.Tables(0).Columns.Add([Ô]DataAcessoEnt[Ô], GetType(DateTime))
ds.Tables(0).Columns.Add([Ô]DataAcessoSai[Ô], GetType(DateTime))
ds.Tables(0).Columns.Add([Ô]Validado[Ô], GetType(String))
Return ds
End Function
Sub que salva o dataset no banco de dados
Public Sub AtualizarDataSet1(ByVal db As DataTable, ByVal SQL As String)
Dim conn As New SqlConnection(ConectString)
conn.Open()
Dim TableAdapter As New SqlDataAdapter(SQL, conn)
TableAdapter.Fill(db)
Dim Tab_MinhaTabela As DataTable
Tab_MinhaTabela = db
Dim CmdBuilder As New SqlCommandBuilder(TableAdapter)
TableAdapter.Update(db)
conn.Close()
End Sub
Já tentei de varias formas mas não grava os registros mas também não da erro.
Desde já agradeço.
Estou tentando inserir registro no banco de dados através de um dataset, só que não estou conseguindo o pior que também não gera erro, dessa forma não consigo identificar o que preciso corrigir, fiz varias pesquisas tentei vários exemplos, só que os mesmos não são inseridos os registros, mas também não da erro, veja abaixo os códigos que estou utilizando.
A tabela no meu banco de dados e formada por seis colunas, sendo que chave primaria é do tipo inteiro incrementada automaticamente no meu banco de dados
Função para criar meu dataset, que está funcionando normalmente, não estou criando o campo Id auto incremento, mas também tentei criando não deu certo.
Public Function criarTblAcesso() As DataSet
Dim ds As New DataSet
ds.Tables.Add([Ô]tblAcessos[Ô])
ds.Tables(0).Columns.Add([Ô]Loguin[Ô], GetType(String))
ds.Tables(0).Columns.Add([Ô]Aplicativo[Ô], GetType(String))
ds.Tables(0).Columns.Add([Ô]DataAcessoEnt[Ô], GetType(DateTime))
ds.Tables(0).Columns.Add([Ô]DataAcessoSai[Ô], GetType(DateTime))
ds.Tables(0).Columns.Add([Ô]Validado[Ô], GetType(String))
Return ds
End Function
Sub que salva o dataset no banco de dados
Public Sub AtualizarDataSet1(ByVal db As DataTable, ByVal SQL As String)
Dim conn As New SqlConnection(ConectString)
conn.Open()
Dim TableAdapter As New SqlDataAdapter(SQL, conn)
TableAdapter.Fill(db)
Dim Tab_MinhaTabela As DataTable
Tab_MinhaTabela = db
Dim CmdBuilder As New SqlCommandBuilder(TableAdapter)
TableAdapter.Update(db)
conn.Close()
End Sub
Já tentei de varias formas mas não grava os registros mas também não da erro.
Desde já agradeço.
Bom dia,
vou te passar outra solução que uso apenas com datatable
Na verdade criei uma classe de conexao com dois métodos, um de pesquisa outro de CRUD
aà quando for pesquisar no banco só instancia a classe e manda o SQL
daà é só saber como obter os valores desse DataTable
E pra INSERT, UPDATE ou DELETE também instancie a classe e passe o sql da operação desejada através do metodo CRUD
e assim em diante;
se seu banco não for access e for mysql muda pouca coisa na classe de conexao. se for mesmo access, atente-se para a string de conexão pois a que passei é pros bancos novos [Ô]accdb[Ô] a do [Ô]mdb[Ô] é outra string
vou te passar outra solução que uso apenas com datatable
Na verdade criei uma classe de conexao com dois métodos, um de pesquisa outro de CRUD
Imports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Windows.Forms
Public Class conexao
Private Banco As String = [Ô]Provider=Microsoft.ACE.OLEDB.12.0;Data Source=caminho_banco; Jet OLEDB:Database Password = senha_Banco;[Ô]
Public Function Pesquisar(ByVal SQL As String) As DataTable
Dim dados As New DataTable
Try
dados.Rows.Clear()
Dim conectar As New OleDbConnection(Banco)
conectar.Open()
Dim comando As New OleDbCommand(SQL, conectar)
Dim adapter As New OleDbDataAdapter(comando)
adapter.Fill(dados)
conectar.Close()
Catch ex As Exception
MessageBox.Show([Ô]Erro de Comando SQL: [Ô] & ex.Message)
End Try
Return dados
End Function
Public Sub CRUD(ByVal SQL As String)
Try
Dim conectar As New OleDbConnection(Banco)
conectar.Open()
Dim comando As New OleDbCommand(SQL, conectar)
comando.ExecuteNonQuery()
conectar.Close()
Catch ex As Exception
MessageBox.Show([Ô]Erro de Comando SQL: [Ô] & ex.Message)
End Try
End Sub
End Class
aà quando for pesquisar no banco só instancia a classe e manda o SQL
Dim Conn As New conexao()
Dim dados As New DataTable = Conn.Pesquisar([Ô]SELECT * FROM tabela[Ô])
daà é só saber como obter os valores desse DataTable
E pra INSERT, UPDATE ou DELETE também instancie a classe e passe o sql da operação desejada através do metodo CRUD
Dim Conn As New conexao()
Conn.CRUD([Ô]INSERT INTO...[Ô])
e assim em diante;
se seu banco não for access e for mysql muda pouca coisa na classe de conexao. se for mesmo access, atente-se para a string de conexão pois a que passei é pros bancos novos [Ô]accdb[Ô] a do [Ô]mdb[Ô] é outra string
Obrigado Accioly.
Mas onde passo meu Dataset já criado para atualizar meu banco de dados?
Você sabe me dizer o que está errado na minha sub AtualizarDataSet? Essa sub era para atualizar meu banco de dados.
Desde já agradeço.
Mas onde passo meu Dataset já criado para atualizar meu banco de dados?
Você sabe me dizer o que está errado na minha sub AtualizarDataSet? Essa sub era para atualizar meu banco de dados.
Desde já agradeço.
Olha isto.Exemplo simples.
http://www.jorgepaulino.com/2008/04/vbnet-utilizando-o-controlo.html.
No site o Macoratti tem mais.
http://www.jorgepaulino.com/2008/04/vbnet-utilizando-o-controlo.html.
No site o Macoratti tem mais.
Que banco vc está utilizando?
Como vc está fazendo a conexão com o banco?
Já vou falando que tive as mesmas dificuldades quando tentei conectar com o data Soure do .net
Depois que passei a usar OLEDB na unha como te passei na última resposta tudo melhorou. Pq assim vc tem algo mais confiável
Como vc está fazendo a conexão com o banco?
Já vou falando que tive as mesmas dificuldades quando tentei conectar com o data Soure do .net
Depois que passei a usar OLEDB na unha como te passei na última resposta tudo melhorou. Pq assim vc tem algo mais confiável
Citação::
Bom dia,
vou te passar outra solução que uso apenas com datatable
Na verdade criei uma classe de conexao com dois métodos, um de pesquisa outro de CRUDImports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Windows.Forms
Public Class conexao
Private Banco As String = [Ô]Provider=Microsoft.ACE.OLEDB.12.0;Data Source=caminho_banco; Jet OLEDB:Database Password = senha_Banco;[Ô]
Public Function Pesquisar(ByVal SQL As String) As DataTable
Dim dados As New DataTable
Try
dados.Rows.Clear()
Dim conectar As New OleDbConnection(Banco)
conectar.Open()
Dim comando As New OleDbCommand(SQL, conectar)
Dim adapter As New OleDbDataAdapter(comando)
adapter.Fill(dados)
conectar.Close()
Catch ex As Exception
MessageBox.Show([Ô]Erro de Comando SQL: [Ô] & ex.Message)
End Try
Return dados
End Function
Public Sub CRUD(ByVal SQL As String)
Try
Dim conectar As New OleDbConnection(Banco)
conectar.Open()
Dim comando As New OleDbCommand(SQL, conectar)
comando.ExecuteNonQuery()
conectar.Close()
Catch ex As Exception
MessageBox.Show([Ô]Erro de Comando SQL: [Ô] & ex.Message)
End Try
End Sub
End Class
aà quando for pesquisar no banco só instancia a classe e manda o SQLDim Conn As New conexao()
Dim dados As New DataTable = Conn.Pesquisar([Ô]SELECT * FROM tabela[Ô])
daà é só saber como obter os valores desse DataTable
E pra INSERT, UPDATE ou DELETE também instancie a classe e passe o sql da operação desejada através do metodo CRUDDim Conn As New conexao()
Conn.CRUD([Ô]INSERT INTO...[Ô])
e assim em diante;
se seu banco não for access e for mysql muda pouca coisa na classe de conexao. se for mesmo access, atente-se para a string de conexão pois a que passei é pros bancos novos [Ô]accdb[Ô] a do [Ô]mdb[Ô] é outra string
Só um complemento ao post do ACCIOLLY.
Para o provider funcionar, terá de ter o Access Database Engine instalado no computador.
Tópico encerrado , respostas não são mais permitidas