从MySQL db中检索数据

时间:2014-04-13 03:09:36

标签: mysql database visual-studio c++-cli

所以我试图从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中放置什么才能显示该查询的结果?

由于

2 个答案:

答案 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); 
}

如果您拥有大量数据,消息框可能不是显示此信息的最佳方式,当然测试就足够了。文本框可能是更好的选择。