MySQL Connector, VS2008, C++, DataGridView Probleme

gamefreaktegel

Grünschnabel
Hallo Leute,

ich besitze Visual Studio 2008 Professional SP1 und den MySQL Connector 5.2.3. Ich habe ein .NET Forms Projekt (C++) und möchte Daten aus einer MySQL-Datenbank in einem DataGridView ausgeben.

Hier mal mein Code, der aus diversen Google-Ergebnissen und Hilfeseiten entstanden ist ;)

Code:
MySqlConnection^ myConnection = gcnew MySqlConnection("Persist Security Info=False;database=ks-buchhaltung;server=192.168.0.1;user id=user;Password=pw");
myConnection->Open();
MySqlDataAdapter adapter = gcnew MySqlDataAdapter();
adapter.SelectCommand = gcnew MySqlCommand("SELECT * FROM T_Kunden", myConnection);
DataTable table = gcnew DataTable();
adapter.Fill(table);
BindingSource bSource = gcnew BindingSource();
bSource.DataSource = table;
dataGridView1.DataSource = bSource;

Kann das so funktionieren? Ich erhalte nämlich einige Fehlermeldungen u.a. diesen hier mehrmals:
Code:
error C2664: 'MySql::Data::MySqlClient::MySqlDataAdapter::MySqlDataAdapter(MySql::Data::MySqlClient::MySqlCommand ^)': Konvertierung des Parameters 1 von 'MySql::Data::MySqlClient::MySqlDataAdapter ^' in 'MySql::Data::MySqlClient::MySqlCommand ^' nicht möglich
1>        Es ist kein benutzerdefinierter Konvertierungsoperator verfügbar, oder
1>        Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

Hat da jemand eine Idee oder eine Lösung?

Danke!
 

Nico Graichen

Erfahrenes Mitglied
Hi

Also wenn ich das richtig sehe, tritt der Fehler nicht in obigen Code auf:
Bitte poste man den Code, auf den der Fehler verweißt und markier bitte die entsprechende Zeile.

Danke
 

gamefreaktegel

Grünschnabel
Doch der Fehler tritt als erstes in der Zeile
Code:
MySqlDataAdapter adapter = gcnew MySqlDataAdapter();
auf.

Der restliche Code in der Forms Anwendung ist bis auf die Zeile, dass er den Namespace aus der MySqlClient Klasse benutzen soll, original von VS2008 erstellt worden.
 
Zuletzt bearbeitet:

warcraft9105

Erfahrenes Mitglied
Sorry ich meinte natürlich
Code:
MySqlDataAdapter^ adapter = gcnew MySqlDataAdapter();
Was hast du noch gemacht, dass du mit der Datenbank arbeiten kannst?.. also namespace oder so?
 

gamefreaktegel

Grünschnabel
oh man... ich bin ja ein Napp ^^

war einiges falsch. So ist es richtig:

Code:
MySqlConnection^ myConnection = gcnew MySqlConnection("Persist Security Info=False;database=ks-buchhaltung;server=192.168.0.1;user id=user;Password=pw");
myConnection->Open();
MySqlDataAdapter^ adapter = gcnew MySqlDataAdapter();
adapter->SelectCommand = gcnew MySqlCommand("SELECT * FROM T_Kunden", myConnection);
DataTable^ table = gcnew DataTable();
adapter->Fill(table);
BindingSource^ bSource = gcnew BindingSource();
bSource->DataSource = table;
dataGridView1->DataSource = bSource;

Danke trotzdem!
 

gamefreaktegel

Grünschnabel
Ich habe noch ein neues Problem ;)
In meiner MySQL-Datenbank habe ich eine eindeutige ID, Typ int, auto_increment und unsigned zerofill.
Bei einem Select auf der Konsole erhalte ich die gewünschte Anzeige (ID = 0001, 0002 usw.).
In meinem DataGridView jedoch nur 1, 2 usw.
Ich vermute, dass C++ da die führenden Nullen abschneidet (klar wegen integer).
Kann man für eine Spalte die Formatierung so anpassen, dass C++ praktisch ein zerofill macht?
Hat da jemand eine Idee?