用C++ API方式连接MySQL

9 篇文章 0 订阅

记得更改mysql的登陆密码 password~~~ 

#include<iostream>
#include<winsock.h>
#include<mysql.h>
#include<string>
#include<iomanip>

using namespace std;

#define STEPBYSTEP
int main(void)
{
	cout<<"**********小虾米出品***********"<<endl;

#ifdef STEPBYSTEP
	system("pause");
#endif
	MYSQL mydata;
	//初始化数据库
	if(mysql_library_init(0,NULL,NULL)==0)
		cout<<"mysql_library_init() succeed"<<endl;
	else
	{
		cout<<"mysql_library_init() failed"<<endl;
		return -1;
	}

#ifdef STEPBYSTEP
	system("pause");
#endif
	//初始化结构数据
	if(mysql_init(&mydata)!=NULL)
		cout<<"mysql_init() succeed"<<endl;
	else
	{
		cout<<"mysql_init() failed"<<endl;

		return -1;
	}
#ifdef STEPBYSTEP
	system("pause");
#endif
	//连接数据库之前,设置额外的连接选项
	//可以设置的选项很多,这里设置字符集
	if(mysql_options(&mydata, MYSQL_SET_CHARSET_NAME,"gbk")==0)
		cout<<"mysql_options() succeed"<<endl;
	else
	{
		cout<<"mysql_options() failed"<<endl;
		return -1;
	}
#ifdef STEPBYSTEP
	system("pause");
#endif
	//连接数据库
	// 更改密码password
	if(mysql_real_connect(&mydata,"localhost", "root","password","xiami",3306, NULL, 0)!=NULL)
		cout<<"mysql_real_connect() succeed!"<<endl;
	else
	{
		cout<<"mysql_real_connect() failed!"<<endl;
		return -1;
	}
#ifdef STEPBYSTEP
	system("pause");
#endif
	string query;
	query="create table if not exists fruit";
	query+="(";
	query+="id int unsigned primary key auto_increment comment 'unique id',";
	query+="fruit_name nvarchar(20) not null default '' comment 'name of fruit',";
	query+="weight decimal(3,1) not null default 0.0 comment 'weight',";
	query+="color varchar(20) not null default '' comment 'color'";
	query+=")engine myisam charset utf8;";
	if(mysql_query(&mydata, query.c_str())==0)
		cout<<"mysql_query() succeed"<<endl;
	else
	{
		cout<<"mysql_query() failed"<<endl;
		return -1;
	}
#ifdef STEPBYSTEP
	system("pause");
#endif
	//插入数据
	query="insert into fruit (fruit_name,weight,color) values ";
	query+="('apple', 11.2,'green'),";
	query+="('banana', 5.8, 'yellow'),";
	query+="('strawberry', 10.5, 'red'),";
	query+="('watermelon', 8.6, 'redGreen'),";
	query+="('grape', 8.8, 'purple');";

	if(mysql_query(&mydata, query.c_str())==0)
		cout<<"mysql_query() insert data succeed"<<endl;
	else
	{
		cout<<"mysql_query() insert data failed"<<endl;
		return -1;
	}
#ifdef STEPBYSTEP
	system("pause");
#endif
	//显示数据
	MYSQL_RES * res=NULL;
	query="select * from fruit;";
	if(mysql_query(&mydata, query.c_str())==0)
	{
		//取得结果集
		res=mysql_store_result(&mydata);
		//取得行数
		int rowcount=mysql_num_rows(res);
		//取得列数
		int fieldcount=mysql_num_fields(res);
		//获得各字段的名称
		MYSQL_FIELD *field=NULL;
		for(int i=0;i<fieldcount;i++)
		{
			field=mysql_fetch_field_direct(res,i);
			cout<<setw(15)<<field->name;
		}
		cout<<endl;
		//打印各行
		MYSQL_ROW row=NULL;
		while(row=mysql_fetch_row(res))
		{
			for(int i=0;i<fieldcount;i++)
				cout<<setw(15)<<row[i];
			cout<<endl;
		}
	}
	else
	{
		cout<<"mysql_query() select data failed"<<endl;
		mysql_close(&mydata);
		return -1;
	}
#ifdef STEPBYSTEP
	system("pause");
#endif
	//删除表
	query="drop table fruit;";
	if(mysql_query(&mydata,query.c_str())==0)
		cout<<"drop table succeed"<<endl;
	else
	{
		cout<<"drop table failed"<<endl;
		mysql_close(&mydata);
		return -1;
	}
	mysql_free_result(res);
	mysql_close(&mydata);
	mysql_server_end();
	return 0;
}

输出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值