C++操作mysql数据库类

头文件

CMysql.h

  1 #ifndef CMYSQL_H
  2 #define CMYSQL_H
  3 
  4 #include <mysql/mysql.h>
  5 #include <iostream>
  6 #include <string>
  7 #include <vector>
  8 
  9 using namespace std;
 10 
 11 class CMysql
 12 {
 13 public:
 14         CMysql();
 15         ~CMysql();
 16         CMysql(const string host,const string user,const string pwd,const string db,const int port);
 17         int query_0(const string sql);//NOTHING SELECT
 18         string query_1(const string sql);//Select one
 19         int query_N(const string sql,vector<string> &fieldName,vector< vector<string> > &fieldData);//select N
 20         int createdb(const string db);
 21         int dropdb(const string db);
 22 private:
 23         bool connected;
 24         MYSQL *ytsql;
 25 };      
 26 
 27 #endif

定义了2个成员变量ytsql跟connected

ytsql用来保存对mysql操作的MYSQL *结构

connected用来保存是否mysql连接成功

定义了创建跟删除db的成员函数

定义了3个query成员函数

query_0是执行不需要返回结果的语句,如insert,update,detele,create

query_1是执行语句后返回一条结果

query_N是执行语句后返回N条语句结果

field的name保存到vector<string> fieldName中

field的数据保存到vector<vector<string> > fieldData中



CMysql.cpp:

#include "CMysql.h"

CMysql::CMysql()
{
	connected=false;
}

CMysql::~CMysql()
{
	if(connected)
		if(ytsql)
			mysql_close(ytsql);
}

CMysql::CMysql(const string host,const string user,const string pwd,const string db,const int port)
{
	connected=false;
	ytsql=mysql_init(NULL);
	if(ytsql==mysql_real_connect(ytsql,host.c_str(),user.c_str(),pwd.c_str(),db.c_str(),port,NULL,0))
	{	
		if(mysql_select_db(ytsql,db.c_str())<0)
		{
			mysql_close(ytsql);
		}
		connected=true;
	}	
}

//No result;eg INSERT UPDATE DELECT CREATE
int CMysql::query_0(const string sql)
{
	if(connected)
	{
		if(!mysql_real_query(ytsql,sql.c_str(),(unsigned long)sql.length()))
		{
			return (int)mysql_affected_rows(ytsql);
		}
		else
			return -1;
	}
	else
		return -2;
}

//select ONE
string CMysql::query_1(const string sql)
{
	if(connected)
	{
		MYSQL_RES *res;
		MYSQL_ROW row;
		if(!mysql_real_query(ytsql,sql.c_str(),(unsigned long)sql.length()))
		{
			res=mysql_store_result(ytsql);
			row=mysql_fetch_row(res);
			mysql_free_result(res);
			return (row[0]==NULL)?"-1":row[0];
		
		}
		else
			return "-1";
	}
	else
		return "-2";

}


//Select N
int CMysql::query_N(const string sql,vector<string> &fieldName,vector< vector<string> > &fieldData)
{
	if(connected)
	{
		int count,j;
		if(!mysql_real_query(ytsql,sql.c_str(),(unsigned long)sql.length()))
		{
			MYSQL_RES *res;
			MYSQL_ROW row;
			MYSQL_FIELD *fd;
			res=mysql_store_result(ytsql);
			count=(int)mysql_num_rows(res);
			j=mysql_num_fields(res);
			
			//get every row include NAME and TYPE
			for(int i=0;i<j;i++)
			{
				fd=mysql_fetch_field(res);
				fieldName.push_back(fd->name);
				
			}
			
			//get Data
			while(row=mysql_fetch_row(res))
			{
				vector<string> rowVec;
				for(int i=0;i<j;i++)
					rowVec.push_back(row[i]);
				fieldData.push_back(rowVec);
			}
			mysql_free_result(res);
			return count;
		}
		else
			return -1;
	
	}
	else
		return -2;

}

int CMysql::createdb(const string db)
{
	if(connected)
	{
		string temp="CREATE DATABASE ";
		temp+=db;
		if(!mysql_real_query(ytsql,temp.c_str(),(unsigned long)temp.length()))
			return 0;
		else
			return -1;
	}
	else
		return -2;
}

int CMysql::dropdb(const string db)
{
	if(connected)
	{
		string temp="Drop Database ";
		temp+=db;
		if(!mysql_real_query(ytsql,temp.c_str(),(unsigned long)temp.length()))
			return 0;
		else
			return -1;
	}
	else
		return -2;
}




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!关于使用Dev-C++连接MySQL数据库的问题,你可以按照以下步骤进行操作: 1. 首先,确保已经安装了MySQL数据库,并且知道数据库的相关信息,如主机名、用户名、密码等。 2. 在Dev-C++中创建一个新项目,并添加MySQL的头文件和库文件。你可以从MySQL的官方网站下载并安装MySQL Connector/C++,然后将其添加到Dev-C++项目中。 3. 在代码中包含MySQL Connector/C++的头文件。例如: ```cpp #include <mysql_driver.h> #include <mysql_connection.h> ``` 4. 在代码中使用MySQL Connector/C++提供的方法连接到MySQL数据库。例如: ```cpp sql::mysql::MySQL_Driver *driver; sql::Connection *con; // 获取MySQL连接驱动 driver = sql::mysql::get_mysql_driver_instance(); // 连接到MySQL数据库 con = driver->connect("tcp://127.0.0.1:3306", "username", "password"); ``` 请将上面的"username"和"password"替换为你实际的数据库用户名和密码,"tcp://127.0.0.1:3306"替换为你的数据库主机和端口。 5. 成功连接到数据库后,你可以执行SQL查询和其他操作。例如: ```cpp sql::Statement *stmt; sql::ResultSet *res; stmt = con->createStatement(); res = stmt->executeQuery("SELECT * FROM your_table"); while (res->next()) { // 处理查询结果 std::cout << res->getString(1) << std::endl; } delete res; delete stmt; ``` 记得在程序结束时关闭数据库连接: ```cpp con->close(); delete con; ``` 这就是在Dev-C++中使用MySQL数据库的基本步骤。希望对你有所帮助!如果你还有其他问题,可以继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值