PROBLEMA COM INSERT E CLASS!!

MESTRE 24/11/2014 08:14:21
#442719
Galera estou a bastante tempo sem brincar no Vb.net e estou com um problema, não estou conseguindo conectar ao banco pra realizar o insert (muito bobo) porém ja tentei de varias formas e da pal na conexão com o erro: Connection must be valid and open, só que a conexão ta certinho pq ele loga usando o banco normalmente..

tenho a seguir minha classe de conexao:

  Imports Microsoft.VisualBasic
Imports MySql.Data.MySqlClient
Imports System
Imports MySql.Data
Imports MySql.Data.MySqlClient.MySqlDataReader
Imports MySql.Data.MySqlClient.MySqlConnection
Imports MySql.Data.MySqlClient.MySqlCommand



Public Class conn
Public strCon As String
Dim host As String
Dim user As String
Dim pass As String
Dim banco As String
Dim sql As String



Public Sub New()

host = [Ô]meuhost[Ô]
user = [Ô]root[Ô]
pass = [Ô]password[Ô]
banco = [Ô]banco[Ô]
strCon = [Ô]server=[Ô] & host & [Ô]; user id=[Ô] & user & [Ô]; password=[Ô] & pass & [Ô]; database=[Ô] & banco & [Ô];[Ô]

End Sub


Public Function Conectar() As Boolean
Dim Conexao As New MySqlConnection(strCon)
Try
Conexao.Open()
Catch ex As Exception
MsgBox(ex.Message)
End Try


Return Conexao.State

End Function


Public Sub ExecutaQuery(ByVal sql As String)
Dim Conexao As New MySqlConnection(strCon)
Dim objcmd As New MySql.Data.MySqlClient.MySqlCommand(sql)

Try
Conexao.Open()
objcmd.ExecuteNonQuery()

Catch ex As Exception
MessageBox.Show([Ô]Ocorreu um erro: [Ô] & ex.ToString)
Finally

End Try

End Sub

End Class



na minha classe Clientes tenho:
 Imports Microsoft.VisualBasic
Imports MySql.Data.MySqlClient
Imports System
Imports MySql.Data
Imports MySql.Data.MySqlClient.MySqlDataReader
Imports MySql.Data.MySqlClient.MySqlConnection

Public Class clsClientes
[ô]Cria ponte conexão
Dim strSql As String
Dim Banco, obj, Conexao As New conn
Dim objConexao As New MySqlConnection(Conexao.strCon)
Dim cmd As New MySqlCommand
Dim sql As String


Dim Nome As String
Dim Tel As String
Dim Email As String


Public Property Nome_() As String
Get
Return Nome
End Get
Set(ByVal value As String)
Nome = value
End Set
End Property

Public Property Tel_() As String
Get
Return Tel
End Get
Set(ByVal value As String)
Tel = value
End Set
End Property


Public Property Email_() As String
Get
Return Email
End Get
Set(ByVal value As String)
Email = value
End Set
End Property


Public Sub GravaCliente()

sql = [Ô]INSERT INTO labdados.zteste(nome,email,contato) VALUES([ô][Ô] & Nome & [Ô][ô],[ô][Ô] & Tel & [Ô][ô],[ô][Ô] & Email & [Ô][ô])[Ô]
Banco.ExecutaQuery(sql)

End Sub



End Class


No meu botão Gravar
        Cadastro_Cliente.Nome_ = txtNomeCli.Text
Cadastro_Cliente.Tel_ = txtTelCli.Text
Cadastro_Cliente.Email_ = txtEmailCli.Text
Cadastro_Cliente.GravaCliente()

FFCOUTO 24/11/2014 09:00:47
#442721
Resposta escolhida
Amigo,

No objeto Command, você precisa passar a conexão instanciada e aberta. No seu código isso não acontece.
Há duas formas. A primeira é acrescentar a linha em negrito.

Public Sub ExecutaQuery(ByVal sql As String)
Dim Conexao As New MySqlConnection(strCon)
Dim objcmd As New MySql.Data.MySqlClient.MySqlCommand(sql)

Try
Conexao.Open()
objcmd.Connection = Conexao
objcmd.ExecuteNonQuery()

Catch ex As Exception
MessageBox.Show([Ô]Ocorreu um erro: [Ô] & ex.ToString)
Finally

End Try

End Sub


A segunda é feita da forma abaixo:

Public Sub ExecutaQuery(ByVal sql As String)
Try
Dim Conexao As New MySqlConnection(strCon)
Conexão.Open()
Dim objcmd As New MySql.Data.MySqlClient.MySqlCommand(sql, Conexao)
objcmd.ExecuteNonQuery()

Catch ex As Exception
MessageBox.Show([Ô]Ocorreu um erro: [Ô] & ex.ToString)
Finally

End Try

End Sub
MESTRE 24/11/2014 09:14:21
#442723
Valeu FFCOUTO funcionou perfeito !!!!!!!!!

Muito obrigado!
Tópico encerrado , respostas não são mais permitidas