LIGACAO ACCESS
Boas pessoal estou a desenvolver uma aplicação que vai ligar ao uma BD access, mas tenho algumas dúvidas no que diz respeito a esta mesma ligação.
Para ligar a BD e fazer Consultas utilizo:
Imports System.Data.OleDb
Module ligacao
Public oDB As New OleDbConnection
Public oDataRow As DataRow, oDataTable As DataTable
Public Sub AbrirBanco()
oDB.ConnectionString = [Ô]Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\gestcontact.accdb;Jet OLEDB:Database Password=#lobi10$12TaSp*;[Ô]
oDB.Open()
End Sub
Public Sub ExecutarComando(ByVal sSQL As String)
Dim oCMD As OleDbCommand = oDB.CreateCommand
Try
With oCMD
.CommandText = sSQL
.CommandType = CommandType.Text
.ExecuteNonQuery()
End With
MessageBox.Show([Ô]Operação efetuada com sucesso![Ô], [Ô]OK[Ô], MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show(ex.Message & vbCrLf & [Ô]Se o problema continuar entre em contato com o departamento responsável.[Ô], [Ô]Atenção[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Public Sub CarregarDataSet(ByVal sSQL As String)
Dim oDataSet As New DataSet
Dim oCMD As New OleDbCommand
Dim oDataAdapter As New OleDbDataAdapter
Try
With oDataAdapter
.TableMappings.Add([Ô]Table[Ô], [Ô]Tabela1[Ô])
oCMD = New OleDbCommand(sSQL, oDB)
oCMD.CommandType = CommandType.Text
.SelectCommand = oCMD
.Fill(oDataSet)
.Dispose()
End With
oDataSet.AcceptChanges()
oDataTable = oDataSet.Tables.Item(0)
oDataSet.Dispose()
Catch ex As Exception
MessageBox.Show(ex.Message & vbCrLf & [Ô]Se o problema continuar entre em contato com o departamento responsável.[Ô], [Ô]Atenção[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
End Module
Para preencher um formulário utilizo:
Private Sub PreencherComercial()
Dim sSQL As String = [Ô][Ô]
sSQL = sSQL & [Ô]SELECT * FROM tb_comercial[Ô]
CarregarDataSet(sSQL)
For Each ligacao.oDataRow In ligacao.oDataTable.Rows
If Not ligacao.oDataRow Is DBNull.Value Then
Me.lbl_id2.Text = oDataRow([Ô]id_comercial[Ô])
Me.txt_nome.Text = oDataRow([Ô]nome[Ô])
Me.txt_numero.Text = oDataRow([Ô]numero[Ô])
Me.txt_morada.Text = oDataRow([Ô]morada[Ô])
Me.txt_localidade.Text = oDataRow([Ô]localidade[Ô])
Me.txt_codigo_postal.Text = oDataRow([Ô]codigo_postal[Ô])
Me.txt_contacto.Text = oDataRow([Ô]contacto[Ô])
Me.txt_email.Text = oDataRow([Ô]email[Ô])
End If
Next
ligacao.oDB.Close()
End Sub
Ou seja a BD está aberta e depois faço a consulta e tenho de fechar a BD para depois fazer outras consultas.
Gostava de saber se existe alguma forma de eliminar só as Consultas e deixar a ligação a BD aberta (Pronta a receber outra consulta) e não estar sempre a abrir e fechar a ligação à BD.
Para ligar a BD e fazer Consultas utilizo:
Imports System.Data.OleDb
Module ligacao
Public oDB As New OleDbConnection
Public oDataRow As DataRow, oDataTable As DataTable
Public Sub AbrirBanco()
oDB.ConnectionString = [Ô]Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\gestcontact.accdb;Jet OLEDB:Database Password=#lobi10$12TaSp*;[Ô]
oDB.Open()
End Sub
Public Sub ExecutarComando(ByVal sSQL As String)
Dim oCMD As OleDbCommand = oDB.CreateCommand
Try
With oCMD
.CommandText = sSQL
.CommandType = CommandType.Text
.ExecuteNonQuery()
End With
MessageBox.Show([Ô]Operação efetuada com sucesso![Ô], [Ô]OK[Ô], MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show(ex.Message & vbCrLf & [Ô]Se o problema continuar entre em contato com o departamento responsável.[Ô], [Ô]Atenção[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Public Sub CarregarDataSet(ByVal sSQL As String)
Dim oDataSet As New DataSet
Dim oCMD As New OleDbCommand
Dim oDataAdapter As New OleDbDataAdapter
Try
With oDataAdapter
.TableMappings.Add([Ô]Table[Ô], [Ô]Tabela1[Ô])
oCMD = New OleDbCommand(sSQL, oDB)
oCMD.CommandType = CommandType.Text
.SelectCommand = oCMD
.Fill(oDataSet)
.Dispose()
End With
oDataSet.AcceptChanges()
oDataTable = oDataSet.Tables.Item(0)
oDataSet.Dispose()
Catch ex As Exception
MessageBox.Show(ex.Message & vbCrLf & [Ô]Se o problema continuar entre em contato com o departamento responsável.[Ô], [Ô]Atenção[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
End Module
Para preencher um formulário utilizo:
Private Sub PreencherComercial()
Dim sSQL As String = [Ô][Ô]
sSQL = sSQL & [Ô]SELECT * FROM tb_comercial[Ô]
CarregarDataSet(sSQL)
For Each ligacao.oDataRow In ligacao.oDataTable.Rows
If Not ligacao.oDataRow Is DBNull.Value Then
Me.lbl_id2.Text = oDataRow([Ô]id_comercial[Ô])
Me.txt_nome.Text = oDataRow([Ô]nome[Ô])
Me.txt_numero.Text = oDataRow([Ô]numero[Ô])
Me.txt_morada.Text = oDataRow([Ô]morada[Ô])
Me.txt_localidade.Text = oDataRow([Ô]localidade[Ô])
Me.txt_codigo_postal.Text = oDataRow([Ô]codigo_postal[Ô])
Me.txt_contacto.Text = oDataRow([Ô]contacto[Ô])
Me.txt_email.Text = oDataRow([Ô]email[Ô])
End If
Next
ligacao.oDB.Close()
End Sub
Ou seja a BD está aberta e depois faço a consulta e tenho de fechar a BD para depois fazer outras consultas.
Gostava de saber se existe alguma forma de eliminar só as Consultas e deixar a ligação a BD aberta (Pronta a receber outra consulta) e não estar sempre a abrir e fechar a ligação à BD.
Para manter o banco aberto apenas desative esta linha:
Citação:ligacao.oDB.Close()
Qual o motivo de você querer deixar a conexão aberta em vez de abrir e fechar ela?
é arriscado deixar o banco de dados aberto, se for um projeto pequeno, sem problemas, porém se for um projeto grande, mais pra frente pode vir a dar problemas.
Mas caso você queira é só fazer o oque o ROBIU disse. Só tirar a linha.
Mas caso você queira é só fazer o oque o ROBIU disse. Só tirar a linha.
Citação:ligacao.oDB.Close()
Então mas quer dizer que como utilizo é que está correcto? Cada vez que fizer uma consulta abrir e fechar a ligação á BD?
Eu julgava que o correcto era abrir a ligação quando abrimos a aplicação e depois fechar quando saÃmos.
Qual a forma correcta?
Abrir e Fechar a Ligação Sempre que fazer uma Consulta a BD ou Abrir a Ligação Quando Abrimos a aplicação e só fechar quando saÃmos?
Eu julgava que o correcto era abrir a ligação quando abrimos a aplicação e depois fechar quando saÃmos.
Qual a forma correcta?
Abrir e Fechar a Ligação Sempre que fazer uma Consulta a BD ou Abrir a Ligação Quando Abrimos a aplicação e só fechar quando saÃmos?
Creio que o correto seria sempre abrir a conexão, realizar as operações que deseja e fechar ao terminar.
Como disse o amigo MatheusNeris, é arriscado deixar a conexão aberta.
Até mais.
Como disse o amigo MatheusNeris, é arriscado deixar a conexão aberta.
Até mais.
Citação::
Então mas quer dizer que como utilizo é que está correcto? Cada vez que fizer uma consulta abrir e fechar a ligação á BD?
Sim. E se tratando do Access é essencial!
Tópico encerrado , respostas não são mais permitidas