ABRIR CONEXAO

ALTAIR148 31/03/2011 09:01:05
#369822
Em minha aplicação estou trabalhando com um banco online, e minha dúvida é a seguinte quando abro o form principal já é criada a conexao:

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


Dim CN As New ADODB.Connection
Dim RS, RS1 As New ADODB.Recordset
Dim da As New OleDb.OleDbDataAdapter
Dim ds As New DataSet

CN = New ADODB.Connection [ô]conexao usando ADO
CN.Open([Ô]DRIVER={MySQL ODBC 5.1 Driver};server=XX;user id=XX;password=;database=XX[Ô])

End Sub


dessa forma ai a conexão já foi feita, o que eu quero é que quando eu abrir um outro form um de cadastro por exemplos ele utulize essa conexão que já foi aberta no form principal, ou seja, quando abrir o form de cadastro não precise criar uma nova conexão.
RODRIGOFERRO 31/03/2011 09:13:18
#369825
Resposta escolhida
entao comece a usar classes e modulos e/ou camadas... segue tutorial do macoratti !

VB .NET- Manutenção de dados com ListView, ADO .NET usando DAL - I
VB .NET- Manutenção de dados com ListView, ADO .NET usando DAL - II

A sim o tutorial é ADO.NET, pois o tipo de conexao que voce esta usando é ADODB com Driver ODBC
Recomendo ADO.NET com o Driver de MYSQL para .NET... mas isso é assunto para outro POST

Abraços
ALTAIR148 31/03/2011 09:35:56
#369828
Criei um módulo da seguinte forma:

Module conexao
Dim CN As New ADODB.Connection
Dim RS, RS1 As New ADODB.Recordset
Dim da As New OleDb.OleDbDataAdapter
Dim ds As New DataSet
Public Sub main()
CN = New ADODB.Connection [ô]conexao usando ADO
CN.Open([Ô]DRIVER={MySQL ODBC 5.1 Driver};server=127.0.0.1;user id=altair;password=123;database=exemplo[Ô])
End Sub
End Module


Mas como que faço para chama-lo? tentei usar [Ô]call conexao()[Ô] mas dá o seguinte erro: is a type and cannot be used as an expression.
JEISONANTONI 31/03/2011 13:16:00
#369880
boa tarde Altair148

olha só voce pode definir essa variavel CN como publica em um modulo dai vc pode criar a rotina de conexao e chamar ela no form principal do programa, e podera usar ela em todo o programa

dai qndo vc fechar o programa, vc fecha a variavel
ALTAIR148 31/03/2011 19:18:28
#369982
Fiz o módulo da seguinte forma:


Imports System.Data.OleDb

Module conector
Dim CN As New ADODB.Connection
[ô]Instanciando um novo objeto “conecta” do tipo OleDbConnection para ser utilizado no projeto.

[ô]Instanciando um novo objeto “comando” do tipo OleDbCommand para ser usado no projeto.



[ô]Public conecta As New ADODB.Connection
Public comando As New ADODB.Command



[ô] Procedimento para conexão com o banco de dados.

Public Sub Conectar()

CN = New ADODB.Connection [ô]conexao usando ADO
CN.Open([Ô]DRIVER={MySQL ODBC 5.1 Driver};server=XXX;user id=XXX;password=XXX;database=XXXX[Ô])
[ô]CN.Open()
End Sub

[ô] Procedimento para desconectar do banco de dados.

Public Sub Desconectar()
CN.Close()
End Sub

[ô] Procedimento para testar conexão com o banco de dados.

Public Sub testaconexao()
Try
Conectar()
MsgBox([Ô]Conexão realizada com sucesso!!![Ô])
Catch ex As Exception
MsgBox([Ô]Não foi possível conectar o banco de dados[Ô])
Desconectar()
End Try
Desconectar()

End
End Sub
End Module


no form principal eu coloquei

Call conectar()

E o que coloco nos outros forms? Coloquei neles também [Ô]Call Conectar()[Ô]. Eles conectam, mas aparentemente eles fazem toda a conexão novamente.
KURTGU 31/03/2011 19:39:49
#369983
^^^^^^^^^^^^^^^DADOS DE login no bd junto no codigo............nao e legal............
ALTAIR148 31/03/2011 19:46:42
#369985
Bom esse bd é so para testes mesmo... Muito Obrigado ai KURTGU[txt-color=#e80000] [/txt-color]
ALTAIR148 31/03/2011 21:59:26
#369996
Há....
Uma coisa que esqueci de mencionar é a seguinte, pode ser que eu esteja errado...
Com o código que postei por último eu consigo criar uma conexão, e chama-lá nos outros forms. Ai que vem o que eu posso estar enganado.
No form principal ele demora um pouco mais abrir pois ele esta criando a conexão. Já nos outros forms é normal eles demorarem abrir (o mesmo tempo que o form principal), ou ele teria que ser instantâneo, pois a conexão já foi aberta.
RODRIGOFERRO 31/03/2011 22:13:22
#369997
entao crie uma Função GetConexao o Escopo é assim

Se Conexao_esta_aberta Entao Retorna_a_Conexao
Se Conexao_esta_Fechada Entao Conecta e Retorna_a_Conexao

Alguma duvida para implantar essa ideia ?
ALTAIR148 01/04/2011 06:09:16
#370014


Sim tenho dúvidas, é que sou novato, o meu maior medo é de criar uma aplicação online e se cada form que o meu cliente abrir, ele tiver que esperar realizar novamente a conexão ele perde muito tempo. E quando a minha dúvida é como eu implanto essa sua função.

Obrigado
RODRIGOFERRO 01/04/2011 06:55:01
#370015
[ô]Solicitar instancia
Public Function GetConexao() As MySqlConnection

If Conexao.State <> ConnectionState.Open Then
Conectar()
End If

Return Conexao

End Function


um simples if Resolve
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas