Search code examples
wxwidgets

how to show database table in wxListCtrl


i m just a beginner and i m using c++, wxwidget and mysql manually i m capable to add data in ListCtrl but when i m filling data in ListCtrl , conversion showing some problem i know how to add data in wxListCtrl ex-

data_list_control->InsertColumn(0,wxT("Country"),2);
data_list_control->SetColumnWidth(0, 110);
data_list_control->InsertColumn(1,wxT("State"),2);
data_list_control->SetColumnWidth(1, 110);
data_list_control->InsertColumn(2,wxT("Zip"),2);
data_list_control->SetColumnWidth(2, 160);
long index = data_list_control->InsertItem(0, wxT("India"));
data_list_control->SetItem(index, 1, wxT("U.p"));
data_list_control->SetItem(index, 2, wxT("208005"));

with the help of this we can get India U.p 208005 in wxListCtrl but when i am filling this with database then conversion of varchar to wxString creating a problem, it is showing all the result but in garbage form i m doing mysql connectivity, look at this

while((row=mysql_fetch_row(result)))
{

long index=data_list_control->InsertItem(i,wxT(row[i]));
i++;
for(j=1;j<num_fields;j++)
{

data_list_control->SetItem(index,j,wxT(row[j]));
}
}

if database have three row then listctrl also showing three row but value are in unexpected form.. i only want to know how to convert varchar, int , long or any database data type to wxString format.


Solution

  •                     List_Ctrl_Data obj1 ;
    
                             MYSQL_RES *database_table_data;
                             database_table_data=obj1.getdata();
                             if (database_table_data==NULL)
                             {
                                 int decision = wxMessageBox(wxT("CAN NOT CONNECT TO DATABASE"), wxT("Message"),  wxOK | wxICON_INFORMATION, NULL,  -1, -1);
                             }
                             else if(mysql_num_rows(database_table_data)==0)
                             {
                                 int decision = wxMessageBox(wxT("database has nothing to show"), wxT("Message"),  wxOK | wxICON_INFORMATION, NULL,  -1, -1);
                             }
                             else
                             {
                                 int num_fields;
                                 MYSQL_ROW row;
                                 num_fields = mysql_num_fields(database_table_data);
                                 long i=0;
                                 int j;
                                 while((row=mysql_fetch_row(database_table_data)))
                                 {
                                     const char* chars1 = row[0];
                                     wxString mystring1(chars1, wxConvUTF8);
                                     long index=data_list_control->InsertItem(i,mystring1);
                                     i++;
                                     for(j=1;j<num_fields;j++)
                                     {
                                         const char* chars2=row[j];
                                         wxString mystring2(chars2,wxConvUTF8);
                                         data_list_control->SetItem(index,j,mystring2);
                                     }
                                 }
                             }
    

    } void login::onbuttonclick(wxCommandEvent & WXUNUSED(event)) {

    Close(true);
    

    }