CONEXÃO TEM QUE SER AVALIADA E ABERTA

THRON 03/02/2016 13:31:54
#456986
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:
   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)
GUIMORAES 03/02/2016 13:38:01
#456987
Resposta escolhida
Você deve abrir 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()
THRON 03/02/2016 13:45:33
#456988
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)
GUIMORAES 03/02/2016 13:49:18
#456989
Qual linha?
THRON 03/02/2016 13:59:30
#456990
Consegui arrumar:

   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
THRON 03/02/2016 14:01:01
#456992
Ai aparece que o erro é na linha 106 que tem só

  conn.Close() 
THRON 03/02/2016 14:07:20
#456993
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

THRON 03/02/2016 14:13:08
#456995
Tinha um misero ponto e virgula onde não devia:

   SQL = [Ô]SELECT idtest_bd, name_bd, img_bd  FROM 'test'.'test_bd' WHERE idtest_bd;[Ô] & DataGridView1.CurrentRow().Cells(0).Value 


está funcionado agora :D
MOUSER 03/02/2016 14:23:19
#456996
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