vs2010 将mysql中数据导入到MFC列表中显示乱码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vs2010 将mysql中数据导入到MFC列表中显示乱码相关的知识,希望对你有一定的参考价值。
代码如下
BOOL CsqltextDlg::OnInitDialog()
CDialogEx::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
m_List.SetExtendedStyle(LVS_EX_FLATSB
|LVS_EX_FULLROWSELECT
|LVS_EX_HEADERDRAGDROP
|LVS_EX_ONECLICKACTIVATE
|LVS_EX_GRIDLINES);
m_List.InsertColumn(0,_T("ID"),LVCFMT_LEFT,100,0);
m_List.InsertColumn(1,_T("Name"),LVCFMT_LEFT,100,1);
m_List.InsertColumn(2,_T("CountryCode"),LVCFMT_LEFT,100,2);
m_List.InsertColumn(3,_T("District"),LVCFMT_LEFT,100,3);
m_List.InsertColumn(4,_T("Population"),LVCFMT_LEFT,100,4);
mysql m_MySQL;
mysql_init(&m_MySQL);
if(!mysql_real_connect(&m_MySQL,"localhost","root","159753","world",3306,NULL,0))
AfxMessageBox(_T("数据库连接失败"));
return FALSE;
char *ch_query;
ch_query="SELECT * FROM city";
if(mysql_real_query(&m_MySQL,"SELECT * FROM city",(UINT)strlen(ch_query))!=0)
AfxMessageBox(_T("读取数据表格失败!"));
return FALSE;
MYSQL_RES *result;
MYSQL_ROW row;
if(!(result=mysql_use_result(&m_MySQL)))
AfxMessageBox(_T("读取数据集失败"));
return FALSE;
CString str;
int i=0;
while(row = mysql_fetch_row(result))
str.Format(_T("%s"),row[0]);
m_List.InsertItem(i,str);
str.Format(_T("%s"),row[1]);
m_List.SetItemText(i,1,str);
str.Format(_T("%s"),row[2]);
m_List.SetItemText(i,2,str);
str.Format(_T("%s"),row[3]);
m_List.SetItemText(i,3,str);
str.Format(_T("%s"),row[4]);
m_List.SetItemText(i,4,str);
i++;
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
同样的代码在去掉str.Format(_T("%s"),row[i]);中的 _T()后在VC6.0中可以显示正常的英文 如下图
下图是数据库中表信息
mysql_options(&m_mysql,MYSQL_SET_CHARSET_NAME,"gb2312");
或者
mysql_query(&m_mysql,"set names gb2312;");
查询的结果每一列,不管是整形还是英文字段,都是乱码。
而用insert或者update操作数据库,即使是中文,也不出现乱码。 参考技术B if(!mysql_real_connect(&m_MySQL,"localhost","root","159753","world",3306,NULL,0))
AfxMessageBox(_T("数据库连接失败"));
return FALSE;
char *ch_query;
在这里加一句设置SQL里有一句是设置数据库用的字符集的 函数 我以前和你遇到过一样的问题
自己百度下 MYSQL更改字符集的sql语句 把字符集改成 GBK936 或者GB-2312就没问题了 现在数据库不支持中文
ch_query="SELECT * FROM city";
if(mysql_real_query(&m_MySQL,"SELECT * FROM city",(UINT)strlen(ch_query))!=0)
AfxMessageBox(_T("读取数据表格失败!"));
return FALSE;
另外 数据库本身出要建成GB2312的
mysql怎样将一个数据库中的数据导入到另一个数据库中
1、启动该工具,设置好数据链接。
2、先看下SQL SERVER中的数据,现在需要将这些数据导入到MySQL中。
3、在MySQL中也建有同样的表,但在该表中做了点区别,age这个字段命名跟SQL SERVER中不一样,其余的都一样。
4、点击工具栏中的下列按钮开始数据导入。
5、根据提示操作。
6、选择文件数据源。
7、选择第一项。
8、导入完成。
参考技术A db1为原数据库,db2为要导出到的数据库,fromtable 是要导出的表名1.方法一:
登录导出到的数据库,执行
create table fromtable select * from db1.fromtable;
2.方法二:
在cmd下执行,mysqldump -u root -p db1 fromtable file=d:/fromtable.sql; 输入秘密,root为用户名
登录db2 执行 source d:/fromtable.sql;
3.方法三:
登录db1 执行 select * from fromtable into outfile "d:/fromtable .txt"; 导出纯数据格式
登录db2 执行 load data infile d:/fromtable .txt into table fromtable; 需要先建一张和原表结构一样的空表。
4.建一个odbc连接,先导出到access中,再导出到另一个库中。本回答被提问者采纳
以上是关于vs2010 将mysql中数据导入到MFC列表中显示乱码的主要内容,如果未能解决你的问题,请参考以下文章
我用VS2010的C++导入ADO导入不了,提示无法打开源文件msado15.tlh
VS2010-MFC(常用控件:滚动条控件Scroll Bar)