看到有人说MySQL提供的库函数比ADO要快,不管真假,试一试.
要得到库函数,需要完全安装MySQL,然后就会在安装目录下就会发现了.
include:包含需要的头文件.
lib/opt:编译连接时需要,封装库.
#include <WinSock2.h>//需要这个头文件,即使我这里用不到 #include "./MySqlSDK/mysql.h"//我自己把这些文件拉出来了 #pragma comment(lib, "./MySqlSDK/libmysql.lib") MYSQL *m_pMySQL;//MySQL的连接句柄 MYSQL_RES *pResRet;//返回的结果集 my_ulonglong RecordCount;//共有几条数据 MYSQL_ROW pRow;//某一行的数据 /* 根据帮助文档: 每一个线程在查询MySQL数据库之前都要调用一次mysql_init mysql_init会初始化一些全局变量 */ m_pMySQL = mysql_init(NULL);//失败返回NULL,一般不会失败 if (mysql_real_connect(m_pMySQL, ".", "root", "root", "表名", -1, NULL, 0))//失败返回NULL,我这里还是使用的Pipe连接 { if (mysql_query(m_pMySQL,"set names /'GBK/'") == ERROR_SUCCESS//设置字符集,否则中文会显示乱码 && mysql_query(m_pMySQL, "Select * From SalesMen") == ERROR_SUCCESS)//成功返回0 { if (pResRet = mysql_store_result(m_pMySQL))//失败返回0 { RecordCount = mysql_num_rows(pResRet); while (pRow = mysql_fetch_row(pResRet))//函数会自动指向下一个记录,无记录则为NULL { ::MessageBoxA(NULL, pRow[2], "", NULL);//不知道为什么统一为char*,是byte??? } AfxMessageBox(_T("查询OK")); mysql_free_result(pResRet); } } } mysql_close(m_pMySQL);
基本书写格式已经明白,不过我还是去用ADO,我可不想重写代码,想想就烦.
一定要记得,执行SQL语句"set names /'GBK/'"后才能正确显示中文.