MySQL 연동을 위해서는..
MySQL 제공하는 라이브러리의 헤더파일 포함 및 lib파일의 정적링크 또는 경로를 지정하며..
추가적으로 libmysql.dll 파일도 있어야 한다..
헤더소스
|
/************************************** * http://ysksoft.com * ***************************************/
#define SOCKET int #include <iostream> #include <vector> #include <mysql.h> #pragma comment(lib, "Util/modules/MySQL/lib/libmySQL.lib")
using namespace std;
class UtilMySQL { private: MYSQL *mysql; MYSQL_RES *sql_result; MYSQL_ROW sql_row; public: UtilMySQL(void); virtual ~UtilMySQL(void); virtual bool connect(char* pDatabaseHost, char* pDatabaseUser, char* pDatabasePassWord, char* pDatabaseName); virtual bool query(char *sql); virtual my_ulonglong numRows(MYSQL_RES* sql_result); virtual MYSQL_RES* storeResult(); virtual MYSQL_ROW fetchRow(MYSQL_RES* sql_result); virtual void freeResult(MYSQL_RES* sql_result); virtual int numFields(MYSQL_RES* sql_result); virtual void connectClose(); virtual vector< vector<char*> > select(char* sql); }; |
cpp 소스
|
/************************************** * http://ysksoft.com * ***************************************/
#include "Util/UtilMySQL.h"
UtilMySQL::UtilMySQL() { } UtilMySQL::~UtilMySQL() { } bool UtilMySQL::connect(char* pDatabaseHost, char* pDatabaseUser, char* pDatabasePassWord, char* pDatabaseName) { this->mysql = mysql_init(0); if(!this->mysql) { cout<<"mysql failed"<<endl; return false; } this->mysql = mysql_real_connect(this->mysql, pDatabaseHost, pDatabaseUser, pDatabasePassWord, pDatabaseName, 3306, 0, 0); if (this->mysql == 0) { cout<<"Connection failed"<<endl; return false; } return true; } bool UtilMySQL::query(char* sql) { if(mysql_query(this->mysql, sql)!=0) { fprintf(stderr, "Mysql query error : %s", mysql_error(this->mysql)); return false; } return true; } my_ulonglong UtilMySQL::numRows(MYSQL_RES* sql_result) { return mysql_num_rows(sql_result); } MYSQL_RES* UtilMySQL::storeResult() { return mysql_store_result(this->mysql); } MYSQL_ROW UtilMySQL::fetchRow(MYSQL_RES* sql_result) { return mysql_fetch_row(sql_result); } int UtilMySQL::numFields(MYSQL_RES* sql_result) { return mysql_num_fields(sql_result); } void UtilMySQL::freeResult(MYSQL_RES* sql_result) { mysql_free_result(sql_result); } void UtilMySQL::connectClose() { mysql_close(this->mysql); } vector< vector<char*> > UtilMySQL::select(char* sql) { this->query(sql); this->sql_result = this->storeResult();
int row_field_count = this->numFields(this->sql_result); vector< vector<char*> > lists;
int i = 0; while((this->sql_row=this->fetchRow(this->sql_result))!=0) { lists.push_back(vector<char*>()); for(int x=0; x<row_field_count; x++) { lists[i].push_back(this->sql_row[x]); } i++; } this->freeResult(this->sql_result); return lists; } |
0 개의 댓글:
댓글 쓰기