window下连接mysql

网上很多VC连接mysql的例子都是要带个libmysql.dll才能正常使用的。

但有时我们并不想多带个libmysql.dll,只想单文件就能使用或者你是要

封装在一个dll文件里,这时你要就用到mysqlclient.lib这个静态库了。

示例代码如下,很很简单,就不多说了。

相关的mysql头文件及静态库:

http://download.csdn.net/source/1047386

#include <stdio.h>
#include <windows.h>
#include "mysql.h"

//忽略LIBCMT.lib, MSVCRTD.lib这些库,不然链接时会报lnk2005错误
#pragma comment(linker,"/nodefaultlib:LIBCMT.lib")
#pragma comment(linker,"/nodefaultlib:MSVCRTD.lib")

/*用mysqlclient.lib,不要用libmysql.lib,要不你要多带一个libmysql.dll
静态库有两个,一个是debug版的,一个是release版的,要注意
*/
#if defined _DEBUG
#pragma comment(lib, "..\\mysqllib\\lib\\debug\\mysqlclient.lib") 
#else
#pragma comment(lib, "..\\mysqllib\\lib\\opt\\mysqlclient.lib")
#endif

#pragma comment(lib, "wsock32.lib")
//#pragma comment(lib, "Advapi32.lib")


int main()
{
    MYSQL* mysql = NULL;
    mysql = mysql_init(mysql);

    MYSQL_RES* res;
    MYSQL_ROW record;

    mysql_real_connect(mysql, "192.168.1.99", "root", "hyd409", "signallamp1", 3306, NULL, NULL);
    mysql_query(mysql, "select * from user");
    res = mysql_store_result(mysql);
    while ((record = mysql_fetch_row(res)))
    {
        printf("auth=%s,password=%s,access=%s\n", record[0], record[1], record[2]);
    }
    mysql_free_result(res);
    mysql_close(mysql);

    printf("Over");
    //getchar();

    while (1);

    return 0;
}

 遇到的问题:

我用C++函数mysql_use_result获取mysql数据库中的数据,其编码格式为utf-8,但得到的是中文字符串都是'?'

答案
执行mysql_use_result语句之前增加一句:
char *sql="set names gbk;";
msyql_query(sql);
这样执行后将当前会话的客户端编码格式调整为中文格式。

posted @ 2018-01-11 14:32  guanlongcun  阅读(949)  评论(0编辑  收藏  举报