Shi Kai Lun 的日志

C++连接MySQL

前几天得到了CSDN和天涯的账号文件,一开始我使用Java希望将数据导入MySQL,但那速度实在是受不了,这次我想用C++试试,不过C++连接MySQL可真是麻烦,不像Java写个工具类,随时可以用。

我的环境是Visual Studio 2010,MySQL版本为5.1,MySQL在安装时必须选择Complete安装。

在VS中新建一个工程,为了连接MySQL,我们需要做一些前期工作,进入工程的属性,选择配置属性的VC++目录,在右侧的包含目录里加入MySQL的include文件夹地址,我的为C:\Program Files\MySQL\MySQL Server 5.1\include;在库目录加入lib目录,我的为C:\Program Files\MySQL\MySQL Server 5.1\lib\opt。

现在就可以编写C++代码了,这里给个Demo:

#include <stdio.h>
#include <iostream>
#include "winsock.h"  
#include "mysql.h"
#pragma comment(lib, "libmysql.lib") 
using namespace std;
int main( )
{
    cout<<"begin to connect the mysql\n";
    MYSQL mysql;
    MYSQL_RES *result;
    MYSQL_FIELD *fd;
    MYSQL_ROW sql_row;
    char column[32][32];
    //初始化MySQL C API库  
    mysql_library_init(0,NULL,NULL);
    //初始化mydata的数据结构
    mysql_init(&mysql);
    mysql_options(&mysql,MYSQL_SET_CHARSET_NAME,"utf8"); 
    //连接函数  
    if(mysql_real_connect(&mysql,
        "localhost","root","root","csdn",3306,0,0) != NULL)
    {
        cout<<"database connection OK!\n";
        //查询
        int res=mysql_query(&mysql,"select * from csdn");
        if(!res)
        {
            //保存查询到的数据到result
            result=mysql_store_result(&mysql);
            if(result)
            {
                int i,j;
                cout<<"number of result: "<<(unsigned long)mysql_num_rows(result)<<endl;
                //获取列名
                for(i=0;fd=mysql_fetch_field(result);i++)
                {
                    strcpy(column[i],fd->name);
                }
                j=mysql_num_fields(result);
                for(i=0;i<j;i++)
                {
                    cout<<column[i]<<"\t";
                }
                printf("\n");
                //获取具体的数据
                while(sql_row=mysql_fetch_row(result))
                {
                    for(i=0;i<j;i++)
                    {
                        cout<<sql_row[i]<<"\n";
                    }
                    cout<<endl;
                }
            }
         }
        else
        {
            cout<<"query sql failed!"<<endl;
        }
    }
    else
    {
        cout<<"connect failed";
    }
    if(result!=NULL)
        mysql_free_result(result);//释放结果资源
    mysql_close(&mysql);//断开连接
    return 0;
}

这段代码用于C++连接数据库以及查询并输出,其他就要自己去参考MySQL的C API库了,http://dev.mysql.com/doc/refman/5.1/zh/apis.html#c 。

Posted on
This entry was posted in technology  and tagged cpp