本篇文章給大家分享的是有關c++中怎么實現(xiàn)一個MySQL通用類,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于網(wǎng)站建設、成都網(wǎng)站建設、烏魯木齊網(wǎng)絡推廣、小程序開發(fā)、烏魯木齊網(wǎng)絡營銷、烏魯木齊企業(yè)策劃、烏魯木齊品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供烏魯木齊建站搭建服務,24小時服務熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
常用的函數(shù)
初始化API庫:mysql_library_init()
初始化數(shù)據(jù)結構:mysql_init()
連接數(shù)據(jù)庫前的選項:mysql_options()
錯誤信息:mysql_error()
連接函數(shù):mysql_real_connect()
執(zhí)行SQL語句:mysql_query()
轉存查詢結果:mysql_store_result()
關閉連接:mysql_close()
dbctrl.h
#ifndef __DBCTRL_H__ #define __DBCTRL_H__ #include "winsock.h" #include "iostream.h" #include#include "mysql.h" #pragma comment(lib, "ws2_32.lib") #pragma comment(lib, "libmysql.lib") using namespace std; class DBctrl { private: MYSQL mydata; //MySQL對象,必備的一個數(shù)據(jù)結構 MYSQL_RES *result; //用于存放結果 建議用char* 數(shù)組將此結果轉存 public: int row; //查詢結果的行數(shù) int field; //查詢結果的列數(shù) int autoNum; //上一次auto_increment的值 int errorNum; //錯誤代號 const char* errorInfo; //錯誤提示 int affectedRow; //上一次查詢影響的行數(shù) DBctrl(); //構造函數(shù) 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" //構造函數(shù) 初始化各個變量和數(shù)據(jù) 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; } //編譯時顯示測試信息,正式使用時把此函數(shù)主題注釋掉即可 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<服務器域名或IP char* usr=username; //username:數(shù)據(jù)庫用戶名 char* pwd=password; //password:數(shù)據(jù)庫密碼 char* dbn=database; //database:數(shù)據(jù)庫名 int prt=port; //port:端口號 //這里新建變量并再賦一次值是為了調(diào)試的時候顯示連接參數(shù),其實可以不這么做 if(mysql_real_connect(&mydata,svr,usr,pwd,dbn,prt,0,0) != NULL) DBtest(1); else DBtest(2); } //執(zhí)行查詢語句 void DBctrl::DBquery(string queryStr) { if(0==mysql_query(&mydata,queryStr.c_str())) DBtest(3); else DBtest(4); DBerror(); } //執(zhí)行查詢語句(重載,有返回結果的) 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);//計算行數(shù) field=mysql_num_fields(result);//計算列數(shù) //轉出數(shù)據(jù) if(row>100 || field>100) DBtest(5); else { MYSQL_ROW line=NULL; line=mysql_fetch_row(result);//取第一行結果 int j=0; while(NULL!=line)//查看是否為空行,是則結束,否則將這一行的數(shù)據(jù)轉存到data的一行中并取下一行 { for(int i=0; i 主體
#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); //執(zhí)行query中的語句,并將結果回送給data my.DBclose(); //關閉連接 /* 此處用for循環(huán)顯示data數(shù)組的內(nèi)容... */ }以上就是c++中怎么實現(xiàn)一個mysql通用類,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當前題目:c++中怎么實現(xiàn)一個mysql通用類
文章分享:http://weahome.cn/article/gejcgo.html