c++中怎么实现一个mysql通用类
创始人
2024-12-24 08:02:22
0次

常用的函数

初始化API库:mysql_library_init() 

初始化数据结构:mysql_init()

连接数据库前的选项:mysql_options()

错误信息:mysql_error()

连接函数:mysql_real_connect()

执行SQL语句:mysql_query()

转存查询结果:mysql_store_result()

关闭连接:mysql_close()

dbctrl.h

#ifndef __DBCTRL_H__
#define __DBCTRL_H__

#include "winsock.h"
#include "iostream.h"
#include 
#include "mysql.h"
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "libmysql.lib")
using namespace std;

class DBctrl
{
	private:
		MYSQL mydata;                      //MySQL对象,必备的一个数据结构
		MYSQL_RES *result;                 //用于存放结果 建议用char* 数组将此结果转存
	public:
		int   row;                         //查询结果的行数
		int   field;                       //查询结果的列数
		int   autoNum;                     //上一次auto_increment的值
		int   errorNum;                    //错误代号
		const char* errorInfo;             //错误提示
		int   affectedRow;                 //上一次查询影响的行数
		

		DBctrl();                          //构造函数

		void DBtest(int flag);            
		void DBerror();
		void DBconn(char* server, char* username, char* password, char* database,int port);
		void DBquery(string queryStr);
		void DBquery(string queryStr, char* data[100][100]);
		void DBclose();
};

#endif

dbctrl.cpp

#include "dbctrl.h"

//构造函数 初始化各个变量和数据
DBctrl::DBctrl()
{
	mysql_library_init(0,NULL,NULL);
	mysql_init(&mydata);
	mysql_options(&mydata,MYSQL_SET_CHARSET_NAME,"gbk");

	row=0;
	field=0;
	autoNum=0;
	errorNum=0;
	errorInfo="ok";
	affectedRow=0;
}

//编译时显示测试信息,正式使用时把此函数主题注释掉即可
void DBctrl::DBtest(int flag)
{
	char* message;
	switch (flag)
	{
		case 1:
			message="Database OK!";
			break;
		case 2:
			message="Database error!";
			break;
		case 3:
			message="Query OK!";
			break;
		case 4:
			message="Query error!";
			break;
		case 5:
			message="data overflew!";
			break;
		default:
			message=NULL;
			break;
	}
	if (message!=NULL) cout<100 || field>100)
		DBtest(5);
	else
	{
		MYSQL_ROW line=NULL;
		line=mysql_fetch_row(result);//取第一行结果

		int j=0;
		while(NULL!=line)//查看是否为空行,是则结束,否则将这一行的数据转存到data的一行中并取下一行
		{	
			for(int i=0; i

主体

    #include "dbctrl.h"  
      
    void main()  
    {  
        DBctrl my;              //刚才建的通用类  
        string query;           //存放查询语句  
        char*  data[100][100];  //存放查询结果  
      
        query="Select * from table1";  
        my.DBconn("localhost","root","123456","test",3306);  
        my.DBquery(query,data); //执行query中的语句,并将结果回送给data  
        my.DBclose();           //关闭连接  
      
        /* 此处用for循环显示data数组的内容... */  
    }

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...