DataBase.h
#include <windows.h>
#include <mysql.h>
class CDataBase
{
public:
int open(char*host, char*user, char*pwd, char*db,unsigned int port);//登陆数据库
void close();//关闭数据库
MYSQL_RES * exec(const char* chSql);//查询,返回结果集
private:
MYSQL m_mysql;
};
DataBase.cpp
#include "DataBase.h"
int CDataBase::open(char*host, char*user, char*pwd,char*db,unsigned int port)//host是主机名,db是创建的数据库名
{
if (!mysql_init(&m_mysql))
return -1;//初始化失败
if (!mysql_real_connect(&m_mysql, host, user, pwd, db, port, 0, 0))
return -2;//连接mysql数据库失败
return 0;//打开数据库成功
}
void CDataBase::close()
{
mysql_close(&m_mysql);
}
MYSQL_RES * CDataBase::exec(const char* sql)
{
MYSQL_RES *rs = NULL;
//如果查询成功,函数返回零。如果发生一个错误,函数返回非零。
if (mysql_real_query(&m_mysql, sql, strlen(sql)) == 0)//查询成功
{
rs = mysql_store_result(&m_mysql);
}
return rs;
}
main.cpp
#include <iostream>
using namespace std;
#include "DataBase.h"
#pragma comment(lib,"libmysql.lib")
void main()
{
CDataBase db;
db.open("127.0.0.1","root","123456","home",3306);//home为数据库名
db.exec("set names gbk");//为了插入中文
MYSQL_RES *res = db.exec("select * from stu");
MYSQL_ROW row;
while (row = mysql_fetch_row(res))//一行一行地从结果集获取数据
{
cout << row[0] <<" "<<row[1]<<" "<<row[2]<< endl;
}
// 释放结果集
mysql_free_result(res);
db.close();
}