LIGACAO ACCESS

TIAGOVARETA 24/10/2012 13:31:59
#412707
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.
ROBIU 24/10/2012 14:55:24
#412715
Para manter o banco aberto apenas desative esta linha:

Citação:

ligacao.oDB.Close()



OCELOT 24/10/2012 17:23:13
#412733
Qual o motivo de você querer deixar a conexão aberta em vez de abrir e fechar ela?
MATHEUSNERIS 24/10/2012 17:36:22
#412734
Resposta escolhida
é 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.

Citação:

ligacao.oDB.Close()

TIAGOVARETA 24/10/2012 21:11:21
#412740
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?
PERCIFILHO 25/10/2012 07:10:53
#412752
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.
LLAIA 25/10/2012 11:39:30
#412775
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