【发布时间】:2023-03-13 14:41:01
【问题描述】:
这些代码将值设置为编辑框。但是当我从 MySQL 表中检索 Unicode 字符时遇到了麻烦。
例如,字符串nüşabə 设置为nüşabÉ™。
这是我的代码。
void CmysqlDlg::OnBnClickedButton3()
{
USES_CONVERSION;
try
{
mysql::MySQL_Driver *driver = new mysql::MySQL_Driver;
Connection *dbConn;
Statement *st;
ResultSet *res;
driver = mysql::get_mysql_driver_instance();
dbConn = driver->connect("tcp://127.0.0.1:3306", "root", "connection");
dbConn->setSchema("mfc_app_database");
st = dbConn->createStatement();
res = st->executeQuery("SELECT password FROM users WHERE id=1");
string z;
while (res->next())
{
//k = res->getString("username");
//cs.Format(_T("%s"), k);
//CString cs(k.c_str(), CP_UTF8);
//combo.AddString(cs);
//usernameData.SetWindowTextW(cs);
z = res->getString("password");
CString pass(z.c_str()/*, CP_UTF8*/);
nameData.SetWindowTextW(pass);
}
delete res;
delete st;
delete dbConn;
delete driver;
}
catch (exception e)
{
ofstream file("sadaasad.txt");
file << e.what();
file.close();
}
}
数据库排序规则设置为utf8_general_ci。
其实我也不知道该怎么办……脑子停了……
请帮忙。谢谢。
【问题讨论】:
-
我希望你知道你是slicing the caught exception。
-
@chris 感谢您的快速回复。但我无法理解你的意思。你能解释一下吗?
-
捕获异常为
catch (exception const & e)。 -
@RichardCritten 我试过了。但也不例外。程序在不停止工作的情况下运行。
-
@coni,这只是代码的一个问题。您捕获异常的方法不会尊重任何派生异常类所做的覆盖。