博客日历
2024年05月 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 七 |
29 | 30 | 1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 1 | 2 |
存档
2024年03月 04月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
用MySQL Connector C++访问MySql数据库,中文UTF-8乱码的解决
直接上代码:
// MySqlTest.cpp : 定义控制台应用程序的入口点。 // #include <iostream> using namespace std; //MySQL Connector C++ 1.0.5,接口跟Oracle的OCCI长的很像(跟JDBC也像),Oracle-MySql官方网站可下载 //D:\Program Files\MySQL\MySQL Connector C++ 1.0.5\include //D:\Program Files\MySQL\MySQL Connector C++ 1.0.5\lib\opt #include <mysql_connection.h> #include <cppconn/statement.h> #include <cppconn/exception.h> using namespace sql; using namespace sql::mysql; #pragma comment(lib,"mysqlcppconn.lib") int main(int argc, char* argv[]) { try { //数据库连接 MySQL_Connection MySqlConn("localhost","root","006355"); //选择数据库(模式) MySqlConn.setSchema("test"); Statement *pStatement = MySqlConn.createStatement(); //在Mysql数据库中,我设置的编码是GB2312,但是这里读出的仍是UTF-8编码的字符 //所以需这句来解决乱码问题 //执行无记录集返回的语句 pStatement->execute("set names gb2312"); //执行有记录集返回的语句 //注意反引号 "`",呵呵 ResultSet* pRs=pStatement->executeQuery("Select * from `Users`"); while (pRs->next()) { cout<<pRs->getInt("id")<<endl; string sChineseText=pRs->getString(2); cout<<sChineseText<<":"; //输出汉字的编码 //D5 C5 C8 FD 张三 ANSI/OEM936:GBK/GB2312 //E5 BC A0 E4 B8 89 张三 UTF8 for (size_t i=0;i<sChineseText.length();i++) { printf("%02X ",(unsigned char)sChineseText[i]); } cout<<endl; cout<<pRs->getString("password")<<endl<<endl; } pRs->close(); pStatement->close(); MySqlConn.close(); } catch (SQLException& ex) { cout<<"Error:"<<ex.what()<<endl; } return 0; }
文档参见:《MySQL 5.5 Reference Manual》21.5. MySQL Connector/C++
可惜的是:
22.5.12.2: Which MySQL Server version(s) is MySQL Connector/C++ compatible with?
MySQL Connector/C++ fully supports MySQL Server version 5.1 and later.
使用低版本MySQL服务器的话,还需MySQL C API。
上一篇: 控制台程序的文字颜色
下一篇: 开源MFC扩展界面库:Ultimate Toolbox的编译
分类:数据库 查看次数:15032 发布时间:2010/7/11 11:54:21