⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rctdata.h

📁 一个简单的基于ODBC的mysql操作
💻 H
字号:
#include<iostream>
#include<iomanip>
#include<string>
#include<windows.h>
#include<mysql/mysql.h>
using namespace std;
/*******Rct****/
#pragma comment(lib,"libmysql.lib")

class MySqlConn
{
	private:
		MYSQL *mysql;           //结构体
		MYSQL_RES *res;         //存储数据集的结构体
		MYSQL_ROW  row;         //行集  指针
		MYSQL_FIELD *field;      //属性集  指针
 
		string host;            //主机名或IP地址
		string username;          //用户名
		string password;          //密码
		string database;          //数据库名
		int    port;           //端口号
		string socket;
		int client_flag;           //
	
	public:
		MySqlConn()               //构造函数
		{
			
		}
		bool connect(string UserName,string Password,string DataBase) //必需信息
		{
			
			host="localhost";
			username=UserName;
			password=Password;
			database=DataBase;
			port=3306;
			socket="\0";
			client_flag=0;

			if( (mysql=mysql_init(NULL))!=NULL )
			{
				cout<<"初始化成功..."<<endl;	
			}
			else
			{
				cout<<"初始化失败!";
				return false;
			}
			if( (mysql_real_connect(mysql,host.c_str(),username.c_str(),password.c_str(),
				database.c_str(),port,socket.c_str(),client_flag))!=NULL)
			{
				cout<<"连接成功..."<<endl;
			}
			else
			{
				cout<<"连接失败!";
				return false;	
			}
			return true;
		}
		
		bool connect(string h,string un,string ps,string db,int p,string so,int cl)//重载connect 方法
		{
			host=h;
			username=un;
			password=ps;
			database=db;
			port=p;
			socket=so;
			client_flag=cl;
		
			if( (mysql=mysql_init(NULL))!=NULL )
			{
				cout<<"初始化成功..."<<endl;	
			}
			else
			{
				cout<<"初始化失败!";
				return false;
			}
			if( (mysql_real_connect(mysql,host.c_str(),username.c_str(),password.c_str(),
				database.c_str(),port,socket.c_str(),client_flag))!=NULL)
			{
				cout<<"连接成功..."<<endl;
			}
			else
			{
				cout<<"连接失败!";
				return false;	
			}
			return true;
		}

		MYSQL_RES* query(string queryStr)            //返回一个MYSQL_RES 指针
		{
			mysql_real_query(mysql,queryStr.c_str(),queryStr.length());
			res=mysql_use_result(mysql);


			return res;
		}
		void showQuery(string queryStr)            //打印查询的表
		{
			mysql_real_query(mysql,queryStr.c_str(),queryStr.length());
			res=mysql_use_result(mysql);

			int fieldsNum=mysql_num_fields(res);

			while(field=mysql_fetch_field(res))
			{
				cout<<field->name<<"\t";
			}
			cout<<endl<<endl;

			while((row=mysql_fetch_row(res))!=NULL)
			{

				for(int i=0;i<fieldsNum;i++)
				{
					string type;
					type=typeid(row[i]).name();
					if(type=="float")
					{
						cout<<setiosflags(ios::fixed)<<setprecision(2)<<row[i]<<"\t";	
					}
					else
						cout<<row[i]<<"\t";
				}
				cout<<endl;
			}
		}
		bool execute(string execuStr)       //执行SQL语句
		{
			if(! (mysql_real_query(mysql,execuStr.c_str(),execuStr.length()) ))
			{
				cout<<"执行成功...\n";
				return true;
			}
				
			else
			{
				cout<<"语句不符合约束条件,未能执行成功!\n";
				return false;
			}
				
		}
		int affectedRows()    //最后一次insert delete update语句所影响的行数
		{
			return (int)mysql_affected_rows(mysql);
		}
		void close()                    //断开连接
		{
			mysql_close(mysql);
		}		
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -