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 。