mysql中怎么导入source数据库
这期内容当中小编将会给大家带来有关mysql中怎么导入source数据库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
想有一个不需要安装mysql客户端就可以导入数据库脚本,但找不到对应的api调用。所以得需要自己去实现导入数据库的实现方法:
common.h
#ifndef_COMMON_H#define_COMMON_H#ifdefWIN32#include<winsock2.h>typedef__int8int8_t;typedef__int16int16_t;typedef__int32int32_t;typedef__int64int64_t;typedefunsigned__int8uint8_t;typedefunsigned__int16uint16_t;typedefunsigned__int32uint32_t;typedefunsigned__int64uint64_t;#defineatoll(_String)\_atoi64(_String)#else#include<sys/types.h>#include<sys/socket.h>#include<stdint.h>#include<linux/string.h>#endif#include<stdlib.h>#include<stdio.h>#include<string>#include<vector>#include<map>#include<set>#include<list>usingnamespacestd;enumSERVER_ACTION{SERVER_STARTNEW=0,//开新服};#ifdefWIN32#definePATH_DELIMTER"\\"#else#definePATH_DELIMTER"/"#endif#endif
dbmanager.h
#ifndef_DBMANAGER_H#define_DBMANAGER_H#include<string>usingnamespacestd;#include"common.h"#include<mysql.h>//数据库配置信息structDBInfo{stringhost;stringuser;stringpasswd;stringdb;uint16_tport;};classDBManager{public:DBManager();~DBManager();boolSelectDB(stringdbName);boolConnectDB(DBInfo&dbInfo);MYSQL_RES*ExeSql(constchar*sql,intlen);boolreadFromSql(stringfileName,vector<string>&sql);boolsourceSql(stringfileName);private:MYSQL*mysqlInit(DBInfo&info);voidmysqlClose();private:MYSQL*m_mysqlConn;DBInfom_dbConfig;};externDBManagerg_DBManager;#endif
dbmanager.cpp
#include"dbmanager.h"#include<fstream>DBManagerg_DBManager;DBManager::DBManager(){}DBManager::~DBManager(){}boolDBManager::ConnectDB(DBInfo&dbInfo){m_dbConfig=dbInfo;m_mysqlConn=mysqlInit(dbInfo);if(!m_mysqlConn){returnfalse;}returntrue;}MYSQL*DBManager::mysqlInit(DBInfo&info){MYSQL*mysql=mysql_init(NULL);if(!mysql)returnNULL;if(!mysql_real_connect(mysql,info.host.c_str(),info.user.c_str(),info.passwd.c_str(),info.db.c_str(),info.port,NULL,0)){intret=mysql_errno(mysql);mysql_close(mysql);returnNULL;}#ifMYSQL_VERSION_ID>=50013my_boolreconnect=1;if(mysql_options(mysql,MYSQL_OPT_RECONNECT,&reconnect)){intret=mysql_errno(mysql);mysql_close(mysql);returnNULL;}#elsemysql->reconnect=1;#endifreturnmysql;}voidDBManager::mysqlClose(){if(m_mysqlConn){mysql_close(m_mysqlConn);m_mysqlConn=NULL;}}/************************************************************************//*执行SQL语句*//************************************************************************/MYSQL_RES*DBManager::ExeSql(constchar*sql,intlen){MYSQL_RES*res=NULL;intret=mysql_real_query(m_mysqlConn,sql,len);if(ret==0){res=mysql_store_result(m_mysqlConn);}else{printf("mysqlquery%sreturnerrorcode:%d\n",sql,mysql_errno(m_mysqlConn));}returnres;}/************************************************************************//*选择数据库*//************************************************************************/boolDBManager::SelectDB(stringdbName){if(mysql_select_db(m_mysqlConn,dbName.c_str()))returnfalse;elsereturntrue;}/************************************************************************//*fileName是sql文件的路径,解析出fileName中的每一条sql语句,放入到sql容器中*//************************************************************************/boolDBManager::readFromSql(stringfileName,vector<string>&sql){ifstreamin(fileName.c_str(),ios::in);//linuxstringsignalSql,s;if(!in){returnfalse;}while(getline(in,s)){intpos=s.find(";");signalSql+=s;if(pos!=s.npos){//找到了一条语句的结束位sql.push_back(signalSql);signalSql.clear();}s.clear();}in.close();returntrue;}/************************************************************************//*导入数据库sql*//************************************************************************/boolDBManager::sourceSql(stringfileName){vector<string>vecSql;boolret=readFromSql(fileName,vecSql);if(ret==false){printf("导入gamedb.sql失败");returnfalse;}for(vector<string>::iteratorit=vecSql.begin();it!=vecSql.end();it++){ExeSql((*it).c_str(),(*it).length());}returntrue;}
上述就是小编为大家分享的mysql中怎么导入source数据库了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。