我只是一个初学者,我使用的是c ++,wxwidget和mysql 手动我能够在ListCtrl中添加数据但是当我在ListCtrl中填充数据时,转换显示出一些问题 我知道如何在wxListCtrl中添加数据 前 -
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"));
借助于此,我们可以获得
印度U.p 208005在wxListCtrl但是当我用数据库填充这个然后转换varchar到wxString创建一个问题时,它显示所有结果但是以垃圾形式
我在做mysql连接,看看这个
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]));
}
}
如果数据库有三行,那么listctrl也显示三行但值是意外形式.. 我只想知道如何将varchar,int,long或任何数据库数据类型转换为wxString格式。
答案 0 :(得分:0)
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&amp; WXUNUSED(event)) {
Close(true);
}