网上有大量的连接教程
这边我只给出代码以及总结
#include <iostream>
#include <WinSock.h>
#include "include/mysql.h"
#include <Windows.h>
#pragma comment(lib,"wsock32.lib")
#pragma comment(lib,"libmysql.lib")
MYSQL mysql;//mysql连接
MYSQL_FIELD *fd;//字段列数组
char field[32][32];//存储字段名的 二维数组
MYSQL_RES* res;//这是一个查询结果集
MYSQL_ROW colum;
char query[150];
char * pwd="1314521";
//函数声明
bool ConnectDatabase(); //通过这个函数去连接数据库
void FreeConnect();//通过这个函数去释放链接
bool QueryDatabase1(); //查询1
bool QueryDatabase2(); //查询2 标准化查询
bool InsertData(); //插入表
bool ModifyData();//修改表
bool DeleteData(); //删除表
int main(int argc, char const *argv[])
{
ConnectDatabase();
QueryDatabase1();
InsertData();
QueryDatabase2();
ModifyData();
QueryDatabase2();
DeleteData();
QueryDatabase2();
FreeConnect();
system("pause");
return 0;
}
//连接数据库
bool ConnectDatabase(){
//初始化mysql
mysql_init(&mysql);
//返回false则连接失败 否则连接成功
if(!(mysql_real_connect(&mysql,"localhost","root",pwd,"test",0,NULL,0))){ //真正的连接数据库部分
//中间分别是主机 用户名 密码 数据库名 端口号(可以谢忱0 或者是3306)
cout<<"Error connecting to database:"<<mysql_error(&mysql)<<endl;
return false;
}
else{
cout<<"Connected..."<<endl;
return true;
}
}
//释放资源包括两部分 一部分是释放结果集 一部分是关闭连接
void FreeConnect(){
//释放资源
mysql_free_result(res);
mysql_close(&mysql);
}
/*******数据库操作************/
/*
其实这边的每个数据库操作都是先写一个sql语句
然后用mysql_query(&mysql,query)
来完成 包括创建数据库或表 增删改查*/
//查询数据
bool QueryDatabase1(){
sprintf(query,"select * from user;");
//--------我们不难得出一个结论,所有的查询连接都是通过 mysql_init进行数据库连接
mysql_query(&mysql,"set names gbk;"); //设置编码格式 set names gbk 也行 否则 cmd下中文会乱码
//返回0则查询成功
if(mysql_query(&mysql,query))
{
cout<"Query failed:"<<mysql_error(&mysql);
return false;
}else{
cout<<"query success!"<<endl;
}
if(!(res = mysql_store_result(&mysql))){ //获取查询结果的结果集
cout<<"can't get result from "<<mysql_error(&mysql);
return false;
}
//打印数据行数
cout<<"number of dataline returned :"<<mysql_affected_rows(&mysql)<<endl;
//获取字段信息
cahr *str_field[32];
for(int i=;i<4;++i){ //在知道字段数量的情况下扩区字段名 即列名
str_field[i]=mysql_fetch_field(res)->name;
}
for (int i = 0; i < count; ++i)
{
cout<<str_field[i]<<endl;
}
cout<<endl;
//打印获取的数据
while(colum = mysql_fetch_row(res)){
cout<<colum[0]<<" "<<colum[1]<<" "<<colum[2]<<" "<<colum[3]<<endl; // column是列数组
}
return true;
}
//这个查询是标准化的 和base1的区别在于它的通用性更好
bool QueryDatabase2(){
mysql_query(&mysql,"set names gbk;");
if(mysql_query(&mysql,"select * from user;")){
cout<<"Query failed!"<<endl;
return false;
}
else{
cout<<"query success!"<<endl;
}
res = mysql_store_result(&mysql);
//打印行数
cout<<"number of dataline returned:"<<mysql_affected_rows(&mysql);
for (int i = 0; i < mysql_fetch_field(&mysql); ++i)
{
strcpy(field[i],fd->name);
}
int len = mysql_num_field(res); //获取字段数
for(int i=0;i<len;++i)
{
cout<<field[i]<<endl;
}
cout<<endl;
while(colum = mysql_fetch_row(res)){
for (int i = 0; i < j; ++i)
{
cout<<colum[i]<<"\t";
}
cout<<endl;
}
return true;
}
//快速插入一行数据
bool InsertData(){
string values;
cout<<"Please input values like(name,age,height...)";
cin>>values;
sprintf(query,"INSERT INTO user values(%s);",values.data());
if(mysql_query(&mysql,query)){ //执行 sql语句
cout<<"query failed : "<<mysql_error(&mysql);
return false;
}else{
cout<<"insert success!"<<endl;
return true;
}
}
//修改数据
bool ModifyData(){
string s;
cout<<"input the information tha you wanna modify(such as emall='123@123.com' where name = 'lilei'";
getline(cin,s);
sprintf(query,"update user set%s",s);
if(mysql_query(&mysql,query)){
cout<<"query failed!"<<endl;
return false;
}else{
cout<<"midify success!"<<endl;
return true;
}
}
//删除数据
bool DeleteData(){
cout<<"enter the drop order"<<endl;
string ss;
getline(cin,ss);
if(mysql_query(&mysql,ss)){
cout<<"query failed"<<endl;
return false;
}else{
cout<<"Delete success!"<<endl;
return true;
}
}
不难看出,答题的步骤无非:初始化MySQL,与数据库建立连接, 进行相关操作后释放资源。
仅仅是几个简单的api 掌握即可