转自:http://blog.chinaunix.net/uid-20767210-id-1849630.html
//下面的代码是一个实现C++连接MYSQL数据库的很好的例子
//这里用了建表,插入,检索,删表等常用功能
//我用VC++6.0生成,已经成功连接了。
//在VC++6.0中要想把做一下两步准备工作才可以。
//(1)Tools->Options->Directories->Include files中添加C:\Program Files\MySQL\MySQL Server 6.0\include
//(2)Tools->Options->Directories->Library files中添加C:\Program Files\MySQL\MySQL Server 6.0\lib
//其实就是将头文件和库文件包含进来
//我觉得这个例子写的很好,再结合自己的试验,特地介绍给大家!
#include <winsock.h>
#include <iostream>
#include <string>
#include <mysql.h>
using namespace std;
#pragma comment (lib,"ws2_32.lib")
#pragma comment(lib,"libmysql.lib")
//不需要单步调试的就注释掉
//#define STEPBYSTEP
void pause(){
#ifdef STEPBYSTEP
system("pause");
#endif
}
void writeToFile(const char *s)
{
FILE *fp=fopen("info.txt","rw");
fprintf(fp,s);
fclose(fp);
}
int main(){
cout<<"start...."<<endl;
pause();
MYSQL mysql;
if(0==mysql_library_init(0,NULL,NULL))
{
cout<<"mysql_library_init succeed"<<endl;
}else{
cout<<"mysql_library_init failed"<<endl;
return -1;
}
pause();
if(NULL!=mysql_init(&mysql))
{
cout<<"mysql_init succeed"<<endl;
}else{
cout<<"mysql_init failed"<<endl;
return -1;
}
pause();
if(0==mysql_options(&mysql,MYSQL_SET_CHARSET_NAME,"gb2312"))
{
cout<<"mysql_option succeed"<<endl;
}else{
cout<<"mysql_option failed"<<endl;
return -1;
}
pause();
if(NULL!=mysql_real_connect(&mysql,"localhost","root","123456","user",3307,NULL,0))
{
cout<<"mysql_real_connect succeed"<<endl;
}else{
cout<<"mysql_real_connect failed"<<endl;
return -1;
}
pause();
string sql;
sql="create table if not exists user_info(";
sql+="user_id int not null auto_increment primary key,";
sql+="user_name varchar(100) default NULL,user_second_sum int not null default 0)";
cout<<sql<<endl;
//writeToFile(sql.c_str());
if(0==mysql_query(&mysql,sql.c_str()))
{
cout<<"mysql_query create table succeed"<<endl;
}else{
cout<<"mysql_query create table failed"<<endl;
mysql_close(&mysql);
return -1;
}
pause();
sql ="insert into user_info(user_name) values('公司名称'),('一级部门'),('二级部门'),('开发小组'),('姓名');";
if(0==mysql_query(&mysql,sql.c_str()))
{
cout<<"mysql_query insert succeed"<<endl;
}else{
cout<<"mysql_query insert failed "<<endl;
mysql_close(&mysql);
return -1;
}
pause();
sql="select user_id,user_name,user_second_sum from user_info";
MYSQL_RES *result=NULL;
if(0==mysql_query(&mysql,sql.c_str()))
{
cout<<"mysql_query select succeed"<<endl;
result=mysql_store_result(&mysql);
int rowcount=mysql_num_rows(result);
cout<<"row count:"<<rowcount<<endl;
unsigned int fieldcount=mysql_num_fields(result);
MYSQL_FIELD *field=NULL;
for(unsigned int i=0;i<fieldcount;i++)
{
field=mysql_fetch_field_direct(result,i);
cout<<field->name<<"\t\t";
}
cout<<endl;
MYSQL_ROW row=NULL;
row=mysql_fetch_row(result);
while(NULL!=row)
{
for(int i=0;i<fieldcount;i++){
cout<<row[i]<<"\t\t";
}
cout<<endl;
row=mysql_fetch_row(result);
}
}else{
cout<<"mysql_query select data failed"<<endl;
mysql_close(&mysql);
return -1;
}
pause();
sql="drop table user_info";
if(0==mysql_query(&mysql,sql.c_str()))
{
cout<<"mysql_query drop table succeed"<<endl;
}else{
cout<<"mysql_query drop table failed"<<endl;
mysql_close(&mysql);
return -1;
}
mysql_free_result(result);
mysql_close(&mysql);
mysql_server_end();
system("pause");
return 0;
}