首页 > 代码库 > c++访问mysql数据库

c++访问mysql数据库

首先,把mysql目录下的include放到项目目录下,然后把libmysql.lib和libmysql.dll放到debug目录下。

#include<mysql.h>之前一定要加上#include<windows.h>否则会产生编译错误。

 

#include "stdafx.h"
#include <Windows.h>
#include "include\mysql.h"
#include <iostream>
using namespace std;

#pragma comment(lib,"libmysql.lib")


int _tmain(int argc, _TCHAR* argv[])
{
    MYSQL mysql;
    MYSQL_RES *result=NULL;
    MYSQL_FIELD *fd;
    MYSQL_ROW sql_row;
    int res;


    mysql_init(&mysql);
    if(!mysql_real_connect(&mysql,"172.1.1.1","root","123456","mysql",3306,0,0))
    {
        fprintf(stderr,"Failedtoconnecttodatabase:Error:%s\\n",mysql_error(&mysql));
    }else{
        mysql_query(&mysql,"SET NAMES GBK");//设置编码格式,否则在cmd下无法显示中文

        res=mysql_query(&mysql,"select * from help_category");//不等于0表示出错
        
        if(!res){
            result=mysql_store_result(&mysql);
            if(result){
                int i=0,j;
                cout<<"number of result: "<<(unsigned long)mysql_num_rows(result)<<endl;//获取行号
                
                j=mysql_num_fields(result);//获取列数
                for(i=0;i<j;i++)
                {
                    fd=mysql_fetch_field(result);//获取列名
                    cout<<fd->name<<"\t";
                }
                cout<<endl;
                while(sql_row=mysql_fetch_row(result)){//获取每行数据
                    for(i=0;i<j;i++)
                    {
                        if(NULL!=sql_row[i]) //防止数据为空
                        cout<<sql_row[i]<<"\t";
                    }
                    cout<<endl;
                }
            }
        }else{
                cout<<"query sql failed!"<<endl;
            }
    }
    if(result!=NULL){
        mysql_free_result(result);//释放结果资源
    }

    mysql_close(&mysql);//断开连接
    system("pause");
    return 0;
}