PROBLEMA ACESSO AO BANCO DE DADOS

PBLUANA 15/11/2011 16:24:55
#389173
Oi gente, tudo bem?
Estou fazendo um programa em VB usando Visual Studio e o BD MySQL Workbench

Estou tendo um problema com a conexão, ele até consegue chegar no conecta.Open() só q cai na exceção

Poderiam me ajudar, por favor?

Segue o código abaixo:

Public Sub AbrirConexao(ByRef conecta As MySqlConnection)
Try
conecta = New MySqlConnection
conecta.ConnectionString = [Ô]DRIVER={MySQL ODBC 3.51 Driver};Server=127.0.0.1; User=root; Password=123456; Database=projetoLC[Ô]
conecta.Open()
MessageBox.Show([Ô]Conexão criada com sucesso![Ô])

Catch ex As Exception
MessageBox.Show([Ô]Erro na conexão com o BD[Ô])
End Try
End Sub

Bjão e Origada =D
ALTAIR148 15/11/2011 16:45:04
#389175
Como assim cai?
PBLUANA 15/11/2011 16:47:52
#389176
é que uso o Debug do Visual Studio pra ver passo-a-passo a conexão.
ALTAIR148 15/11/2011 16:51:34
#389177
Como você faz para chamar essa conexão?

PBLUANA 15/11/2011 16:54:16
#389178
Criei uma classe para conexão:

Public Class conexao

Dim comando As New MySqlCommand
Dim armazena As MySqlDataReader

Public Sub AbrirConexao(ByRef conecta As MySqlConnection)
Try
conecta = New MySqlConnection
conecta.ConnectionString = [Ô]DRIVER={MySQL ODBC 3.51 Driver};Server=127.0.0.1; User=root; Password=123456; Database=projetoLC[Ô]
[ô]conecta.ConnectionString = [Ô]jdbc:mysql://localhost/projetoLC, root, 123456[Ô]
conecta.Open()
MessageBox.Show([Ô]Conexão criada com sucesso![Ô])

Catch ex As Exception
MessageBox.Show([Ô]Erro na conexão com o BD[Ô])
End Try
End Sub

Public Sub FecharConexao(ByRef conecta As MySqlConnection)
Try
conecta.Close()

Catch ex As Exception
MessageBox.Show([Ô]Erro no acesso ao BD![Ô])
End Try
End Sub

Public Sub ExecutaSQL(ByVal conecta As MySqlConnection, ByVal instrucaoSQL As String)
comando = New MySqlCommand
comando.Connection = conecta
comando.CommandText = instrucaoSQL
comando.ExecuteNonQuery()
MessageBox.Show([Ô]Tabela Criada com Sucesso![Ô])
End Sub


Public Function ExecutaSELECT(ByVal conecta As MySqlConnection, ByVal instrucaoSQL As String) As MySqlDataReader
comando = New MySqlCommand
comando.Connection = conecta
comando.CommandText = instrucaoSQL
armazena = comando.ExecuteReader()
Return armazena
End Function

End Class
----------------------------------------------------------------------------------------------------------------------------------------------
Então, quando eu crio a tabela, chamo assim:

Private Sub CadastroUsuario()
conecta = New MySqlConnection()
C = New conexao()

Try [ô]nao consegue acessar o SQL
C.AbrirConexao(conecta)
Try [ô]nao consegue executar o SQL
Dim SQL As String
SQL = [Ô]CREATE TABLE IF NOT EXISTS CadastroUsuario(CodUsuario INTEGER PRIMARY KEY AUTO_INCREMENT, NomeUsuario VARCHAR(30), MatriculaUsuario PRIMARY KEY INTEGER(6), Cargo VARCHAR(15), TipoUsuario VARCHAR(15), Login VARCHAR(10), Senha VARCHAR(8))[Ô]
C.ExecutaSQL(conecta, SQL) [ô]comando que executa na classe
Catch ex As Exception
MessageBox.Show([Ô]Erro no SQL[Ô])
End Try
Catch ex As Exception
MessageBox.Show([Ô]Erro no acesso ao BD[Ô])
Application.Exit()
End Try
C.FecharConexao(conecta)
End Sub
ALTAIR148 15/11/2011 16:58:04
#389179
Olha, faz assim , eu utilizo essa classe para conexão com o mysql, mas você vai precisar baixar o http://mysql.cce.usp.br/Downloads/Connector-Net/mysql-connector-net-6.4.4.msi e referencia-lo.



Imports System, MySql.Data.MySqlClient.MySqlConnection
[ô][ô][ô] <summary>
[ô][ô][ô] Conexao com o banco de dados
[ô][ô][ô] </summary>
[ô][ô][ô] <remarks></remarks>
Public Class Conexao
Dim CN1 As New MySql.Data.MySqlClient.MySqlConnection
[ô]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 comando1 As New MySql.Data.MySqlClient.MySqlCommand



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

Public Sub Conectar1()

[ô] CN1 = New MySql.Data.MySqlClient.MySqlConnection [ô]conexao usando ADO
CN1 = New MySql.Data.MySqlClient.MySqlConnection([Ô]server=127.0.0.1;user id=altair;password=123;database=silva[Ô])
CN1.Open()
End Sub

[ô] Procedimento para desconectar do banco de dados.

Public Sub Desconectar1()
CN1.Close()
End Sub

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

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


End Sub
[ô]Solicitar instancia
Public Function GetConexao1() As MySql.Data.MySqlClient.MySqlConnection

If CN1.State <> ConnectionState.Open Then
Conectar1()
End If

Return CN1

End Function
End Class
PBLUANA 15/11/2011 17:02:22
#389180
Não dá posso usar seu exemplo, tenho que usar essa base que lhe mostrei
ALTAIR148 15/11/2011 17:10:50
#389182
por qual motivo não pode mudar sua classe de conexão? assim ela fica bem mais limpa e mais robusta, pois esta utilizando ado.net e não odbc.

PBLUANA 15/11/2011 17:12:45
#389183
Porque a professora não quer.....
ALTAIR148 15/11/2011 17:14:06
#389184
Hum, tem como postar aqui o seu projeto, assim fica mais fácil.
PBLUANA 15/11/2011 17:18:40
#389185
Eu já postei, é esse:

Criei uma classe para conexão:

Public Class conexao

Dim comando As New MySqlCommand
Dim armazena As MySqlDataReader

Public Sub AbrirConexao(ByRef conecta As MySqlConnection)
Try
conecta = New MySqlConnection
conecta.ConnectionString = [Ô]DRIVER={MySQL ODBC 3.51 Driver};Server=127.0.0.1; User=root; Password=123456; Database=projetoLC[Ô]
[ô]conecta.ConnectionString = [Ô]jdbc:mysql://localhost/projetoLC, root, 123456[Ô]
conecta.Open()
MessageBox.Show([Ô]Conexão criada com sucesso![Ô])

Catch ex As Exception
MessageBox.Show([Ô]Erro na conexão com o BD[Ô])
End Try
End Sub

Public Sub FecharConexao(ByRef conecta As MySqlConnection)
Try
conecta.Close()

Catch ex As Exception
MessageBox.Show([Ô]Erro no acesso ao BD![Ô])
End Try
End Sub

Public Sub ExecutaSQL(ByVal conecta As MySqlConnection, ByVal instrucaoSQL As String)
comando = New MySqlCommand
comando.Connection = conecta
comando.CommandText = instrucaoSQL
comando.ExecuteNonQuery()
MessageBox.Show([Ô]Tabela Criada com Sucesso![Ô])
End Sub


Public Function ExecutaSELECT(ByVal conecta As MySqlConnection, ByVal instrucaoSQL As String) As MySqlDataReader
comando = New MySqlCommand
comando.Connection = conecta
comando.CommandText = instrucaoSQL
armazena = comando.ExecuteReader()
Return armazena
End Function

End Class
----------------------------------------------------------------------------------------------------------------------------------------------
Então, quando eu crio a tabela (isso já está dentro do .vb de um form), chamo assim:

Private Sub CadastroUsuario()
conecta = New MySqlConnection()
C = New conexao()

Try [ô]nao consegue acessar o SQL
C.AbrirConexao(conecta)
Try [ô]nao consegue executar o SQL
Dim SQL As String
SQL = [Ô]CREATE TABLE IF NOT EXISTS CadastroUsuario(CodUsuario INTEGER PRIMARY KEY AUTO_INCREMENT, NomeUsuario VARCHAR(30), MatriculaUsuario PRIMARY KEY INTEGER(6), Cargo VARCHAR(15), TipoUsuario VARCHAR(15), Login VARCHAR(10), Senha VARCHAR(8))[Ô]
C.ExecutaSQL(conecta, SQL) [ô]comando que executa na classe
Catch ex As Exception
MessageBox.Show([Ô]Erro no SQL[Ô])
End Try
Catch ex As Exception
MessageBox.Show([Ô]Erro no acesso ao BD[Ô])
Application.Exit()
End Try
C.FecharConexao(conecta)
End Sub
Página 1 de 2 [20 registro(s)]
Tópico encerrado , respostas não são mais permitidas