iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >c++中怎么实现一个mysql通用类
  • 561
分享到

c++中怎么实现一个mysql通用类

2024-04-02 19:04:59 561人浏览 薄情痞子
摘要

本篇文章给大家分享的是有关c++中怎么实现一个Mysql通用类,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。常用的函数初始化api库:mysq

本篇文章给大家分享的是有关c++中怎么实现一个Mysql通用类,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

常用的函数

初始化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 <string>
#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<<message<<endl;
}

//收集错误信息
void DBctrl::DBerror()
{
	errorNum=mysql_errno(&mydata);
	errorInfo=mysql_error(&mydata);
}

//连接数据库
void DBctrl::DBconn(char* server, char* username, char* password, char* database,int port)
{
	char* svr=server;    //server:服务器域名或IP
	char* usr=username;  //username:数据库用户名
	char* pwd=password;  //password:数据库密码
	char* dbn=database;  //database:数据库名
	int   prt=port;      //port:端口号

	//这里新建变量并再赋一次值是为了调试的时候显示连接参数,其实可以不这么做
	if(mysql_real_connect(&mydata,svr,usr,pwd,dbn,prt,0,0) != NULL)
		DBtest(1);
	else
		DBtest(2);
}

//执行查询语句
void DBctrl::DBquery(string queryStr)
{
	if(0==mysql_query(&mydata,queryStr.c_str()))
		DBtest(3);
	else
		DBtest(4);
	DBerror();
}

//执行查询语句(重载,有返回结果的)
void DBctrl::DBquery(string queryStr, char* data[100][100])
{
	if(0==mysql_query(&mydata,queryStr.c_str()))
		DBtest(3);
	else
		DBtest(4);

	affectedRow=mysql_affected_rows(&mydata);
	autoNum=mysql_insert_id(&mydata);
	result=mysql_store_result(&mydata);

	row=mysql_num_rows(result);//计算行数
	field=mysql_num_fields(result);//计算列数

	//转出数据
	if(row>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<field;i++)
			{
				data[j][i]=line[i];
			}
			j++;
			line=mysql_fetch_row(result);
		}
	}

	DBerror();
}

//断开连接
void DBctrl::DBclose()
{
	mysql_close(&mydata);
}

主体

    #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();           //关闭连接  
      
          
    }

以上就是c++中怎么实现一个mysql通用类,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: c++中怎么实现一个mysql通用类

本文链接: https://www.lsjlt.com/news/57869.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • c++中怎么实现一个mysql通用类
    本篇文章给大家分享的是有关c++中怎么实现一个mysql通用类,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。常用的函数初始化API库:mysq...
    99+
    2024-04-02
  • C#中怎么利用类实现一个接口
    这篇文章给大家介绍C#中怎么利用类实现一个接口,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#类实现接口前面我们已经说过,接口定义不包括方法的实现部分。接口可以通过类或结构来实现。我们主要讲述通过类来实现接口。用类来...
    99+
    2023-06-17
  • 怎么利用C++实现一个反射类
    这篇文章主要讲解了“怎么利用C++实现一个反射类”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么利用C++实现一个反射类”吧!代码环境为VScode + CMake + GCC 8.1.0...
    99+
    2023-07-05
  • C++怎么实现一个复数类
    这篇文章主要介绍了C++怎么实现一个复数类,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。要求实现⼀个复数类 Complex 。 Complex 类包括两个 double 类型...
    99+
    2023-06-14
  • Ajax中怎么实现一个通用模板
    Ajax中怎么实现一个通用模板,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。代码如下:<script type...
    99+
    2024-04-02
  • C#中怎么实现一个数据库操作类
    这期内容当中小编将会给大家带来有关C#中怎么实现一个数据库操作类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#数据库操作类主要包括两类方法:一类用来直接执行SQL语句,另一类用来执行存储过程。其中的数...
    99+
    2023-06-17
  • C语言中怎么实现一个通讯录系统
    C语言中怎么实现一个通讯录系统,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。全部代码如下所示:#include <iostream>#include&...
    99+
    2023-06-20
  • C++中怎么实现一个LeetCode
    这篇文章给大家介绍C++中怎么实现一个LeetCode,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。[LeetCode] 128.Longest Consecutive Sequence 求最长连续序列Given an...
    99+
    2023-06-20
  • C++中怎么实现一个接口
    C++中怎么实现一个接口,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。定理1:C++接口是依赖的终点。接口不需要依赖任何东西。推论1:依赖C++接口是安全的。不会带来更多的...
    99+
    2023-06-17
  • C#实现定义一个通用返回值
    目录场景需求开发环境开发工具实现代码实现效果场景 很多情况下,我们在使用函数的时候,需要return多个返回值,比如说需要获取处理的状态以及信息、结果集等。最古老的时候,有用ref或...
    99+
    2024-04-02
  • Java中怎么实现一个通用组合算法
    Java中怎么实现一个通用组合算法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java实现通用组合算法,存在一个类似{31311133,33113330}这样的集合,经过...
    99+
    2023-06-17
  • PHP中怎么实现一个上传类
    PHP中怎么实现一个上传类,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。<php   classupLoad  {&...
    99+
    2023-06-17
  • AJAX中怎么实现一个分页类
    这篇文章给大家介绍AJAX中怎么实现一个分页类,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。代码如下:  var paginationIndex =&nb...
    99+
    2024-04-02
  • C#中怎么实现一个ControlTemplate方法
    本篇文章为大家展示了C#中怎么实现一个ControlTemplate方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C#实现ControlTemplate方法现在主流的控件模板和样式是引用XAML...
    99+
    2023-06-18
  • C# 中怎么实现一个TextBox事件
    本篇文章为大家展示了C# 中怎么实现一个TextBox事件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C# TextBox事件具体的需求:◆界面要求:定义5个TEXTBOX,分别是:姓名、地址、职...
    99+
    2023-06-17
  • C#中怎么实现一个递归树
    这期内容当中小编将会给大家带来有关C#中怎么实现一个递归树,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#递归树实现实例:从父结点加字节点,注释的是把字节点向父结点上加//将数据填充到dataTable...
    99+
    2023-06-17
  • C#中怎么实现一个IDisposable接口
    这期内容当中小编将会给大家带来有关C#中怎么实现一个IDisposable接口,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#语言有很多值得学习的地方,这里我们主要介绍C#实现IDisposable接口...
    99+
    2023-06-17
  • C#中怎么实现一个Strategy接口
    C#中怎么实现一个Strategy接口,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#实现Strategy接口应用常因用户输入、运行平台和部署环境等的不同执行的任务亦不相同。...
    99+
    2023-06-17
  • C++中怎么实现一个 kmp算法
    本篇文章给大家分享的是有关C++中怎么实现一个 kmp算法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C++ kmp算法模板参数说明const T *source 待匹配的字...
    99+
    2023-06-17
  • 在c#中怎么定义一个类
    在 c# 中,通过使用 class 关键字定义一个类,它是一个模板,用于创建具有特定行为和属性的对象。具体步骤包括:使用 class 关键字定义类名,定义字段、属性、构造函数、方法和事件...
    99+
    2024-05-12
    c#
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作