看到有人说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/'"后才能正确显示中文.