[MySQL]VC++使用MySQL的SDK操作数据库

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

你可能感兴趣的:(mysql,数据库,null,query,文档,vc++)