A CHAVE FORNECIDA NÃO ESTAVA...

JORGESALES 27/02/2017 22:27:08
#471976
Pessoal, fiz uma conexão no db4free usando o VB6, funcionou
perfeitamente, ao tentar conectar com o C# está aparecendo
a mensagem:
Citação:

An unhandled exception of type [ô]System.Collections.Generic.KeyNotFoundException[ô] occurred in mscorlib.dll
Additional information: A chave fornecida não estava presente no dicionário.


O que pode vir a ser isso?
Alguém pode ajudar?
KURTGU 28/02/2017 00:09:55
#471980
Resposta escolhida
Em qual linha ocorre o erro?
JORGESALES 28/02/2017 11:11:12
#471990
Só estou insistindo nisso
porque no VB6 funcionou perfeitamente enquanto
que no C# não funcionou nenhuma vez...
Obrigado por sua atenção amigo.
DS2T 28/02/2017 12:01:56
#471991
Isso acontece porque você está usando provedor de dados diferentes.
Em VB6 você deve estar usando um, em .NET outro. Isso significa que a string de conexão deverá ser diferente.

Quando o provedor MySQL.NET tenta pegar os parâmetros da string de conexão, não encontra o que deveria encontrar. Aparentemente, usa um Dictionary internamente pra poder relacionar cada parâmetro da string de conexão com o seu valor. Quando ele vai buscar essas informações, não encontra e gera esse erro esquisito.

Qual a versão do seu MySQL .NET Connector? Qual a string de conexão que está usando?

Abraços!
KURTGU 28/02/2017 12:03:44
#471992
Tenta desta forma....

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
class Conexao
{

//Conexão MySQL
public MySql.Data.MySqlClient.MySqlConnection myCON;
public MySql.Data.MySqlClient.MySqlCommand myCMD;
public MySql.Data.MySqlClient.MySqlDataReader myDRR;

//[ô]Strings de Conexão MySQL

public string MySQLHost = [Ô]Localhost[Ô];
public string MySQLUsuario = [Ô]root[Ô];
public string MySQLSenha = [Ô][Ô];
public string MySQLDataBase = [Ô]MEUBANCO[Ô];

//Conecta no MySQL
public void Conectar()
{
try
{
myCON = new MySql.Data.MySqlClient.MySqlConnection([Ô]server=[Ô] + MySQLHost + [Ô];user id=[Ô] + MySQLUsuario + [Ô];password=[Ô] + MySQLSenha + [Ô];database=[Ô] + MySQLDataBase);
myCON.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

//Desconecta do MySQL
public void Desconectar()
{
try
{
myCON.Close();
}
catch (Exception ex)
{
MessageBox.Show( ex.Message);
}
}

}
}
JORGESALES 28/02/2017 15:17:18
#471997
KURTGU, como pode ver na imagem, seu código apresenta
exatamente o mesmo erro, a única diferença é que aparece
em forma de mensagem ao invés de interromper o programa.
JORGESALES 28/02/2017 15:22:41
#471998
Citação:

:Qual a versão do seu MySQL .NET Connector?


Uso o conector 3.51 (pois foi o único que funcionou bem com VB6).
Citação:

Qual a string de conexão que está usando?


No C#:
        public string MySQLHost = [Ô]db4free.net[Ô];
public string MySQLUsuario = [Ô]jorgesales[Ô];
public string MySQLSenha = [Ô]123456[Ô];
public string MySQLDataBase = [Ô]meubanco[Ô];

        //Conecta no MySQL
        public void Conectar()
{
try
{
myCON = new MySql.Data.MySqlClient.MySqlConnection([Ô]server=[Ô] + MySQLHost + [Ô];user id=[Ô] + MySQLUsuario + [Ô];password=[Ô] + MySQLSenha + [Ô];database=[Ô] + MySQLDataBase);
myCON.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

No VB6:
db.Open [Ô]Driver={MySQL ODBC 3.51 Driver};Server=db4free.net;Database=meubanco;User=jorgesales;Password=123456;Option=3;[Ô]


KURTGU 28/02/2017 15:41:35
#472000
ja te mando um exemplo so um instante...
KURTGU 28/02/2017 15:58:24
#472002
Fiz um exemplo correndo aqui mais vai te ajudar, precisa melhorar ainda mais da pra entender.. Use o connector que esta na pasta bin salva ai em algum lugar e usa ele nas suas proximas applicacoes, esse que voce esta usando e muito antigo.

JORGESALES 28/02/2017 17:15:28
#472004
KURTGU, muito obrigado por sua grande ajuda,
C# está sendo um grande desafio que só não desisto
porque tenho o apoio de pessoas como você aqui
no fórum....
Obrigado de verdade, ajudou muito e me deu esperanças
de continuar na minha jornada.
Tópico encerrado , respostas não são mais permitidas