Ergebnis einer SQL-Abfrage in Listbox ausgeben

StonedMind

Mitglied
Hallo,

ich programmiere eine GUI-Anwendung mit Visual C++ 2008 Express, womit ich auf eine MySQL-Datenbank zugreife.
Die Verbindung zur Datenbank klappt, ich kann auch schon eine Query an die Datenbank schicken. Das Ergebnis dieser Query speicher ich in der Variable/String recordset_row vom Typ MYSQL_ROW.

Nun möchte ich diese Variable/String in einer Listbox ausgeben:

Code:
listBox1->Items->Add(recordset_row);

Dabei erscheint folgende Fehlermeldung:
error C2664: 'System::Windows::Forms::ListBox::ObjectCollection::Add' : cannot convert parameter 1 from 'MYSQL_ROW' to 'System::Object ^'

Dabei hab ich noch was anderes ausprobiert:
Ich versuche nun auf ein bestimmtes Feld meiner Variable(recordset_row) zuzugreifen. Ein Kollege sagte, dass das somit ein char-Array(char *) wäre.

Code:
const char *strSQL; 
strSQL="SELECT * FROM tblberuf;"; 
mysql_query(mysql,strSQL); 
result=mysql_store_result(mysql); 
recordset_row=mysql_fetch_row(result); 
listBox1->Items->Add(recordset_row[0]);

Wenn ich das versuche in der Listbox auszugeben(s.o.), erscheint folgende Fehlermeldung:

cannot convert parameter 1 from 'char *' to 'System::Object ^'

Da ich aber weiß, dass ich für die Listbox eine Variable vom Typ System::String benötige, muss ich meinen char-Array(char *) in einen System::String umwandeln?

Hab es schon mit der System::Convert Klasse versucht (Convert->ToString).
Dabei kam zwar keine Fehlermeldung mehr aber ne Warunung:

warning C4800: 'MYSQL_ROW' : forcing value to bool 'true' or 'false' (performance warning)

Und in der Listbox steht nun entweder 'True' oder 'False'.
Woran könnte das liegen?

Kann mir irgendjemand weiterhelfen? Oder gibt es eine bessere Möglichkeit das Ergebnis einer SQL-Abfrage in einer ListBox auszugeben?

Ist verdammt wichtig

Hier nochmal mein kompletter Quelltext:

Code:
private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
	
MYSQL *mysql;
MYSQL_RES *result;
MYSQL_ROW recordset_row;
mysql=mysql_init(NULL);

if(mysql == NULL)
{
 MessageBox::Show("Initialisierung fehlgeschlagen","Initialisierung   fehlgeschlagen",MessageBoxButtons::OK,MessageBoxIcon::Exclamation );
}
	
if(mysql_real_connect(mysql,"localhost","Andy","","leisa",0,NULL,0) == NULL)
{
 MessageBox::Show("Verbindungsaufbau fehlgeschlagen","Verbindungsaufbau  fehlgeschlagen",MessageBoxButtons::OK,MessageBoxIcon::Exclamation );
}
else
{
 MessageBox::Show("Verbindung geht","Verbindung geht",MessageBoxButtons::OK,MessageBoxIcon::Exclamation );

const char *strSQL;
strSQL="SELECT * FROM tblberuf;";
mysql_query(mysql,strSQL);
result=mysql_store_result(mysql);
recordset_row=mysql_fetch_row(result);
listBox1->Items->Add(Convert::ToString(recordset_row[0]));
}

mysql_close(mysql);			 }

Vielen Dank schon mal im Voraus für Eure Bemühungen

MfG
Andy
 
Hey,

ich hätte es folgender Maßen gemacht (C#.Net):

Code:
...
using System.Data.OleDb;
...

OleDbConnection dbConnect = new OleDbConnectio("connectioString");
OleDbCommand dbCommand = new OleDbCommand("Select * From tabelle", dbConnect);

listbox1.Item.Clear();

try
{
 dbConnect.Open();
 OleDbDataReader dbReader = dbCommand.Ex..Reader();
 while(dbReader.Read())
 {
  listbox1.Items.Add(dbReader.getValue(0).ToString());
 }
 dbReader.Close();
}
catch(System.Exception fMeldung)
{
 MessageBox.Show(fMeldung.Message);
}
finally
{
 dbConnect.Close();
}

Den Code habe ich aus dem Kopf (nicht ausprobiert), sollte aber funktionieren.

Gruß
d-Stench
 

Neue Beiträge

Zurück