CONEXÕES COM BANCOS DE DADOS

EDUARDONICE 05/06/2015 10:45:18
#447426
Sou principiante em programação de VB.net, porém trabalhei muitos anos com outras linguagens em que os bancos de dados eram incorporados com a própria linguagem como Mumps, Cos (Caché), etc...
O meu problema é o seguinte:
Estou fazendo uma pequena aplicação em VB.net que tem um form que chamará outros forms. Em que momento eu devo conectar e abrir o meu banco de dados? No primeiro form e deixá-lo aberto para os outros forms, ou somente abrir quando precisar e fechar em seguida em cada form? Quais as vantagens e desvantagens?

Grato
Eduardo
OMAR2011 05/06/2015 11:46:51
#447428
O mais indicado é abrir e fechar.
Não deixe Banco aberto.
EDUARDONICE 05/06/2015 12:49:36
#447430
Ok Omar

Aproveitando.... Estou usando conexão via OLEDB, porém vi que existe um Imports System.Data.SQLClient. Você saberia me dizer qual é a melhor indicação? O que deveria mudar para acessar os dados?

Hoje, com o Imports System.Data.Oledb eu faço da seguinte maneira:

No módulo eu fiz:
Public conn As New OleDbConnection
Public cnxGTE As String = [Ô]Provider=sqloledb;Data Source=EDU\SQLEXPRESS;Initial Catalog=BD1;Trusted_Connection=yes;[Ô]
Public cmd As OleDbCommand = conn.CreateCommand

Public Sub AbrirBco()
Abrir = 1
Try
conn.Open()
Catch ex As Exception
Abrir = 0
MessageBox.Show([Ô]Não consegui abrir o banco de dados[Ô], [Ô]Erro[Ô], MessageBoxButtons.OK, MessageBoxIcon.Stop)
End Try
End Sub

No form eu tenho um datagrid (dgvRes) e faço o seguinte:
conn.ConnectionString = cnxGTE
cmd.CommandText = [Ô]Select ID_CARRO as CODIGO, NOMECARRO as DESCRIÇÃO from CARROS;[Ô]
Dim sql As String
sql = cmd.CommandText
Try
AbrirBco()
If Abrir = 0 Then End
Dim Adapter As New OleDbDataAdapter(sql, cnxGTE)
Dim dt As New DataTable([Ô]CARROS[Ô])
Adapter.Fill(dt)
dgvRes.DataSource = dt
Dim Vetor As OleDbDataReader = cmd.ExecuteReader()
Vetor.Close()
Catch erro As Exception
MessageBox.Show([Ô]Erro na Montagem da Pesquisa[Ô], [Ô]Erro[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
FecharBco()
dgvRes.Focus()
End Try

Caso a melhor solução seja o System.Data.SQLClient, como ficaria o trecho acima?
KERPLUNK 05/06/2015 15:39:23
#447435
Resposta escolhida
Pelo que vi, você está usando o SQL Server Express. O .NET tem um conector nativo que é muito melhor que usar OLEDB, Para usar, basta substituir os objetos, por exemplo, ao invés de OLEDBConnection, use SqlConnection, ao invés de OleDbCommand, use SqlCommand e assim por diante para todos os objetos.
EDUARDONICE 05/06/2015 16:00:39
#447438
ok e grato
OMAR2011 05/06/2015 16:02:05
#447439
Para versões mais novas de banco de Dados é melhor usar Provedor net.
Para as de alguns anos anteriores Ole db,net.
Tópico encerrado , respostas não são mais permitidas