所以我试图从MySQL数据库中获取数据并将其显示在messageBox中,但我不知道如何获得我所做查询的结果,这是我的代码:
String^ constring = L"datasource=localhost; port=3306; username=root; password="; /
MySqlConnection^ conDB = gcnew MySqlConnection(constring);
MySqlCommand^ Query = gcnew MySqlCommand("SELECT Bar FROM utilizadores.users WHERE username='"+user+ "' ", conDB );
MySqlDataReader^ reader;
conDB->Open();
try
{
reader = Query->ExecuteReader();
MessageBox::Show(/*Result of the Query here*/);
}
catch (Exception^ex)
{
MessageBox::Show(ex->Message);
}
我必须在MessageBox中放置什么才能显示该查询的结果?
由于
答案 0 :(得分:1)
这应该有效:
reader = Query->ExecuteReader();
String bar = "Bar not found for the user '" & user & "'"
if( reader.Read() ) ' hope the statement returns a single row, and hence `if`
bar = reader.GetString( 0 )
end if
reader.close()
MessageBox::Show( bar );
答案 1 :(得分:1)
要读取数据,通常会使用这样的代码。这假设Bar是double类型。您可以相应地更改Bar的类型。
bar_value = reader-> getDouble(1)的位置表示结果位于第一个列中。
因此,如果您检索了两列并希望第二列的值也是double类型,则可以使用 second_column = reader-> getDouble(2)
解决方案看起来与此类似。
String^ constring = L"datasource=localhost; port=3306; username=root; password="; /
MySqlConnection^ conDB = gcnew MySqlConnection(constring);
MySqlCommand^ Query = gcnew MySqlCommand("SELECT Bar FROM utilizadores.users WHERE username='"+user+ "' ", conDB );
MySqlDataReader^ reader;
onDB->Open();
double^ bar_value;
String^ messagebox_bar_values;
try
{
reader = Query->ExecuteReader();
while (reader->Read())
{
bar_value=reader->GetDouble(1);
messagebox_bar_values=messagebox_bar_values+bar_value.ToString + ",";
//Alternatively the line below should also work. If we are not concerned about the datatype and read the value directly as a string.
//Just comment out the two lines above
//messagebox_bar_values=messagebox_bar_values+reader["Bar"]->ToString;
}
MessageBox::Show(messagebox_bar_values);
}
catch (Exception^ex)
{
MessageBox::Show(ex->Message);
}
如果您拥有大量数据,消息框可能不是显示此信息的最佳方式,当然测试就足够了。文本框可能是更好的选择。