重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这期内容当中小编将会给大家带来有关MySQL中怎么导入source数据库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联建站成立于2013年,我们提供高端成都网站建设、成都网站制作公司、成都网站设计公司、网站定制、成都营销网站建设、小程序设计、微信公众号开发、seo优化服务,提供专业营销思路、内容策划、视觉设计、程序开发来完成项目落地,为成都公路钻孔机企业提供源源不断的流量和订单咨询。
想有一个不需要安装mysql客户端就可以导入数据库脚本,但找不到对应的api调用。所以得需要自己去实现导入数据库的实现方法:
common.h
#ifndef _COMMON_H #define _COMMON_H #ifdef WIN32 #includetypedef __int8 int8_t; typedef __int16 int16_t; typedef __int32 int32_t; typedef __int64 int64_t; typedef unsigned __int8 uint8_t; typedef unsigned __int16 uint16_t; typedef unsigned __int32 uint32_t; typedef unsigned __int64 uint64_t; #define atoll(_String) \ _atoi64(_String) #else #include #include #include #include #endif #include #include #include #include #include
dbmanager.h
#ifndef _DBMANAGER_H #define _DBMANAGER_H #includeusing namespace std; #include "common.h" #include //数据库配置信息 struct DBInfo { string host; string user; string passwd; string db; uint16_t port; }; class DBManager { public: DBManager(); ~DBManager(); bool SelectDB(string dbName); bool ConnectDB(DBInfo &dbInfo); MYSQL_RES* ExeSql(const char * sql, int len); bool readFromSql(string fileName,vector & sql); bool sourceSql(string fileName); private: MYSQL *mysqlInit(DBInfo &info); void mysqlClose(); private: MYSQL *m_mysqlConn; DBInfo m_dbConfig; }; extern DBManager g_DBManager;#endif
dbmanager.cpp
#include "dbmanager.h" #includeDBManager g_DBManager; DBManager::DBManager() { } DBManager::~DBManager() { } bool DBManager::ConnectDB(DBInfo &dbInfo) { m_dbConfig = dbInfo; m_mysqlConn = mysqlInit(dbInfo); if (!m_mysqlConn) { return false; } return true; } MYSQL *DBManager::mysqlInit(DBInfo &info) { MYSQL *mysql = mysql_init(NULL); if (!mysql) return NULL; 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)) { int ret = mysql_errno(mysql); mysql_close(mysql); return NULL; } #if MYSQL_VERSION_ID >= 50013 my_bool reconnect = 1; if (mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect)) { int ret = mysql_errno(mysql); mysql_close(mysql); return NULL; } #else mysql->reconnect = 1; #endif return mysql; } void DBManager::mysqlClose() { if (m_mysqlConn) { mysql_close(m_mysqlConn); m_mysqlConn = NULL; } } /************************************************************************/ /* 执行SQL语句 */ /************************************************************************/ MYSQL_RES* DBManager::ExeSql(const char * sql, int len) { MYSQL_RES* res = NULL; int ret = mysql_real_query(m_mysqlConn, sql, len); if (ret == 0) { res = mysql_store_result(m_mysqlConn); }else{ printf("mysql query %s return errorcode:%d\n",sql, mysql_errno(m_mysqlConn)); } return res; } /************************************************************************/ /* 选择数据库 */ /************************************************************************/ bool DBManager::SelectDB(string dbName) { if(mysql_select_db(m_mysqlConn,dbName.c_str())) return false; else return true; } /************************************************************************/ /*fileName是sql文件的路径, 解析出fileName中的每一条sql语句,放入到sql容器中 */ /************************************************************************/ bool DBManager::readFromSql(string fileName,vector & sql){ ifstream in(fileName.c_str(), ios::in);//linux string signalSql,s; if(!in){ return false; } while(getline(in,s)){ int pos = s.find(";"); signalSql += s; if(pos != s.npos){//找到了一条语句的结束位 sql.push_back(signalSql); signalSql.clear(); } s.clear(); } in.close(); return true; } /************************************************************************/ /* 导入数据库sql */ /************************************************************************/ bool DBManager::sourceSql(string fileName){ vector vecSql; bool ret = readFromSql(fileName,vecSql); if(ret == false){ printf("导入gamedb.sql失败"); return false; } for (vector ::iterator it = vecSql.begin(); it != vecSql.end(); it++) { ExeSql((*it).c_str(), (*it).length()); } return true; }
上述就是小编为大家分享的mysql中怎么导入source数据库了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。