CONEXÃO TEM QUE SER AVALIADA E ABERTA
Boa tarde galera,
Já pesquisei em diversos lugares, e não consegui achar o motivo (Sou praticamente iniciante em programação)
Estou a usar este codigo:
A linha em que me da o erro é a seguinte:
A mensagem de erro:
System.InavlitOperationException: Connection must be valid and open.
em: MySql.Data.MySqlClient.MySqlCommand.CheckState)
em: MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehaviorBehavior)
Já pesquisei em diversos lugares, e não consegui achar o motivo (Sou praticamente iniciante em programação)
Estou a usar este codigo:
Try
Dim conn As New MySqlConnection
Dim cmd As New MySqlCommand
Dim myData As New DataTable
Dim dr As MySqlDataReader
Dim SQL As String
conn = New MySqlConnection
conn.ConnectionString = [Ô]server=localhost;user id=root;password=123456;database=test[Ô]
SQL = [Ô]SELECT idtest_bd, name_bd, img_bd FROM 'test'.'test_bd' WHERE idtest_bd;[Ô] & DataGridView1.CurrentRow().Cells(0).Value
Try
dr = cmd.ExecuteReader(CommandBehavior.SingleRow)
If dr.HasRows Then
dr.Read()
Label1.Text = dr.Item([Ô]idteste_bd[Ô])
Label1.Text = dr.Item([Ô]name_bd[Ô])
Dim fs As New FileStream([Ô]imagem.jpg[Ô], FileMode.Create)
Dim blobl As Byte() = DirectCast(dr.Item([Ô]imagem[Ô]), Byte())
fs.Write(blobl, 0, blobl.Length)
fs.Close()
fs = Nothing
PictureBox1.Image = Image.FromFile([Ô]image.jpg[Ô])
PictureBox1.Dispose()
End If
Catch ex As Exception
MsgBox(ex.ToString())
End Try
Catch ex As MySqlException
MsgBox(ex.ToString())
End Try
A linha em que me da o erro é a seguinte:
dr = cmd.ExecuteReader(CommandBehavior.SingleRow)
A mensagem de erro:
System.InavlitOperationException: Connection must be valid and open.
em: MySql.Data.MySqlClient.MySqlCommand.CheckState)
em: MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehaviorBehavior)
Você deve abrir a conexão.
E fechar a conexão
conn = New MySqlConnection
conn.ConnectionString = [Ô]server=localhost;user id=root;password=123456;database=test[Ô]
conn.Open()
SQL = [Ô]SELECT idtest_bd, name_bd, img_bd FROM 'test'.'test_bd' WHERE idtest_bd;[Ô] & DataGridView1.CurrentRow().Cells(0).Value
E fechar a conexão
Catch ex As Exception
MsgBox(ex.ToString())
End Try
Catch ex As MySqlException
MsgBox(ex.ToString())
End Try
conn.Close()
Nem tinha visto isso, mas agora apareceu outro erro:
System.NullReferenceException: Referência de objeto não definida para uma instância de um objeto (Na mesma linha)
System.NullReferenceException: Referência de objeto não definida para uma instância de um objeto (Na mesma linha)
Qual linha?
Consegui arrumar:
So que me aparece outro erro :/
MySql.Data.MySqlClient.MySqlException (0x80004005): You have an error in you SQL syntax; check the manual that corresponds to your MySql Server version for the right syntax to use near [ô]1[ô] at line1 Esse 1 é a Id do usuario, tipo, carrega as informações más aparece esse erro, e carrega apenas da linha 0, mesmo se eu selecionar outra linha, a linha que eu digo é da datagridview
Dim cmd As MySqlCommand = New MySqlCommand(SQL, conn)
dr = cmd.ExecuteReader(CommandBehavior.SingleRow)
If dr.HasRows Then
dr.Read()
Label1.Text = dr.Item([Ô]idtest_bd[Ô])
Label2.Text = dr.Item([Ô]name_bd[Ô])
If PictureBox1.Image IsNot Nothing Then
PictureBox1.Image.Dispose()
End If
Dim fs As New FileStream([Ô]imagem.jpg[Ô], FileMode.Create)
Dim blobl As Byte() = DirectCast(dr.Item([Ô]img_bd[Ô]), Byte())
fs.Write(blobl, 0, blobl.Length)
fs.Close()
fs = Nothing
PictureBox1.Image = Image.FromFile([Ô]imagem.jpg[Ô])
PictureBox1.Refresh()
So que me aparece outro erro :/
MySql.Data.MySqlClient.MySqlException (0x80004005): You have an error in you SQL syntax; check the manual that corresponds to your MySql Server version for the right syntax to use near [ô]1[ô] at line1 Esse 1 é a Id do usuario, tipo, carrega as informações más aparece esse erro, e carrega apenas da linha 0, mesmo se eu selecionar outra linha, a linha que eu digo é da datagridview
Ai aparece que o erro é na linha 106 que tem só
conn.Close()
Codigo completo:
Private Sub GetCompleted()
Try
Dim conn As New MySqlConnection
Dim myData As New DataTable
Dim dr As MySqlDataReader
Dim SQL As String
conn = New MySqlConnection
conn.ConnectionString = [Ô]server=localhost;user id=root;password=123456;database=test[Ô]
conn.Open()
SQL = [Ô]SELECT idtest_bd, name_bd, img_bd FROM 'test'.'test_bd' WHERE idtest_bd;[Ô] & DataGridView1.CurrentRow().Cells(0).Value
Try
Dim cmd As MySqlCommand = New MySqlCommand(SQL, conn)
dr = cmd.ExecuteReader(CommandBehavior.SingleRow)
If dr.HasRows Then
dr.Read()
Label1.Text = dr.Item([Ô]idtest_bd[Ô])
Label2.Text = dr.Item([Ô]name_bd[Ô])
If PictureBox1.Image IsNot Nothing Then
PictureBox1.Image.Dispose()
End If
Dim fs As New FileStream([Ô]imagem.jpg[Ô], FileMode.Create)
Dim blobl As Byte() = DirectCast(dr.Item([Ô]img_bd[Ô]), Byte())
fs.Write(blobl, 0, blobl.Length)
fs.Close()
fs = Nothing
PictureBox1.Image = Image.FromFile([Ô]imagem.jpg[Ô])
PictureBox1.Refresh()
End If
Catch ex As Exception
MsgBox(ex.ToString())
Finally
End Try
conn.Close()
Catch ex As MySqlException
MsgBox(ex.ToString())
End Try
End Sub
Tinha um misero ponto e virgula onde não devia:
está funcionado agora :D
SQL = [Ô]SELECT idtest_bd, name_bd, img_bd FROM 'test'.'test_bd' WHERE idtest_bd;[Ô] & DataGridView1.CurrentRow().Cells(0).Value
está funcionado agora :D
O problema foi resolvido? se sim, procure a resposta que mais se encaixe e finalize o tópico, se houve outro problema, detalhe ele a nós.
Tópico encerrado , respostas não são mais permitidas