久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

c++中怎么實現(xiàn)一個mysql通用類

154次閱讀
沒有評論

共計 3076 個字符,預(yù)計需要花費 8 分鐘才能閱讀完成。

本篇文章給大家分享的是有關(guān) c ++ 中怎么實現(xiàn)一個 mysql 通用類,丸趣 TV 小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著丸趣 TV 小編一起來看看吧。

常用的函數(shù)

初始化 API 庫:mysql_library_init() 

初始化數(shù)據(jù)結(jié)構(gòu):mysql_init()

連接數(shù)據(jù)庫前的選項:mysql_options()

錯誤信息:mysql_error()

連接函數(shù):mysql_real_connect()

執(zhí)行 SQL 語句:mysql_query()

轉(zhuǎn)存查詢結(jié)果:mysql_store_result()

關(guān)閉連接:mysql_close()

dbctrl.h

#ifndef __DBCTRL_H__
#define __DBCTRL_H__
#include  winsock.h 
#include  iostream.h 
#include  string 
#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ù)結(jié)構(gòu)
 MYSQL_RES *result; // 用于存放結(jié)果   建議用 char*  數(shù)組將此結(jié)果轉(zhuǎn)存
 public:
 int row; // 查詢結(jié)果的行數(shù)
 int field; // 查詢結(jié)果的列數(shù)
 int autoNum; // 上一次 auto_increment 的值
 int errorNum; // 錯誤代號
 const char* errorInfo; // 錯誤提示
 int affectedRow; // 上一次查詢影響的行數(shù)

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 
// 構(gòu)造函數(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 message endl;
// 收集錯誤信息
void DBctrl::DBerror()
 errorNum=mysql_errno(mydata);
 errorInfo=mysql_error(mydata);
// 連接數(shù)據(jù)庫
void DBctrl::DBconn(char* server, char* username, char* password, char* database,int port)
 char* svr=server; //server:服務(wù)器域名或 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í)行查詢語句(重載,有返回結(jié)果的)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ù)
 // 轉(zhuǎn)出數(shù)據(jù)
 if(row 100 || field 100)
 DBtest(5);
 else
 MYSQL_ROW line=NULL;
 line=mysql_fetch_row(result);// 取第一行結(jié)果
 int j=0;
 while(NULL!=line)// 查看是否為空行,是則結(jié)束,否則將這一行的數(shù)據(jù)轉(zhuǎn)存到 data 的一行中并取下一行
 for(int i=0; i field;i++)
 data[j][i]=line[i];
 j++;
 line=mysql_fetch_row(result);
 DBerror();
// 斷開連接
void DBctrl::DBclose()
 mysql_close(mydata);
}

主體

 #include  dbctrl.h  
 
 void main() 
 { 
 DBctrl my; // 剛才建的通用類  
 string query; // 存放查詢語句  
 char* data[100][100]; // 存放查詢結(jié)果  
 
 query= Select * from table1  
 my.DBconn(localhost , root , 123456 , test ,3306); 
 my.DBquery(query,data); // 執(zhí)行 query 中的語句,并將結(jié)果回送給 data 
 my.DBclose(); // 關(guān)閉連接  
 
 /*  此處用 for 循環(huán)顯示 data 數(shù)組的內(nèi)容... */ 
 }

以上就是 c ++ 中怎么實現(xiàn)一個 mysql 通用類,丸趣 TV 小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注丸趣 TV 行業(yè)資訊頻道。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-03發(fā)表,共計3076字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 宁河县| 望奎县| 特克斯县| 仪陇县| 家居| 元阳县| 白河县| 宣威市| 巴东县| 铁岭县| 卓尼县| 乌苏市| 齐齐哈尔市| 柳州市| 新和县| 巴塘县| 北安市| 贺兰县| 固镇县| 通州区| 大厂| 巴青县| 南澳县| 东明县| 哈尔滨市| 敦化市| 额敏县| 平乡县| 若羌县| 湛江市| 南和县| 通州区| 枣庄市| 分宜县| 凌海市| 长泰县| 长沙市| 依安县| 行唐县| 阿克| 玉溪市|