cmysqlmgr.h:
cmysqlmgr.cpp:#ifndef _cmysqlmgr_h_
#define _cmysqlmgr_h_
#include #include "mysql.h"
using namespace std;
class cmysqlmgr
;#endif
main.cpp:#include "cmysqlmgr.h"
cmysqlmgr::cmysqlmgr()
cmysqlmgr::~cmysqlmgr()
bool cmysqlmgr::connect( const char * shost, const char * suser, const char * spwd, const char * sdbname, const char * sport )
if (!mysql_real_connect(m_pmysql, shost, suser, spwd, sdbname, atoi(sport), null, 0) )
} while (0);
return breturn;
}void cmysqlmgr::closeconnect()
}bool cmysqlmgr::excute( const char * squery )
}catch (std::exception &e)
catch (...)
return breturn;
}mysql * cmysqlmgr::getpmysql()
}
mysql官網(#include #include #include "cmysqlmgr.h"
using namespace std;
int main()
; const char * ssql = "select * from calcgsdataflash where gscode = 'ztjb' ";
bret = mysql.excute(ssql);
if (!bret)
mysql_res *res;
mysql_row row;
mysql_field *fields;
res = mysql_store_result(mysql.getpmysql());
if (res)
else if (strncmp(fields[j].name, "ymd", strlen("ymd")) == 0)
else if (strncmp(fields[j].name, "hms", strlen("hms")) == 0)
else if (strncmp(fields[j].name, "f10", strlen("f10")) == 0)}}
sprintf(buf, "update calcgsdataflash set hms = %d where gscode = 'ztjb' and ymd = %d and gpcode = '%s' and f10 = %f", hms, ymd, gpcode.c_str(), f10);
cout << "ssql:" << buf << endl;
bool bret = mysql.excute(buf);
if (!bret)
}mysql_free_result(res);
} mysql.closeconnect();
return 0;
}
3.vs 專案中加入 2 中庫檔案目錄下的 include資料夾、lib資料夾下的 libmysql.lib。
(將 libmysql.dll 拷貝至可執行程式目錄下)
若 release 模式下需要斷點除錯,參見:
2.安裝庫
解壓之後
sudo cp -r include/ /usr/include/mysql/
sudo cp -r lib/ /usr/lib64/mysql/
sudo rpm -ivh mysql-connector-c-devel-6.1.11-1.el7.x86_64.rpm (rpm 命令的用法參見:
3.makefile 引用安裝的庫
1.靜態庫 libmysqlclient.a
2.動態庫 libmysqlclient.so (如果安裝之後沒有 libmysqlclient.so ,只有 libmysqlclient.so.18.0.0,就鏈結一下 ln libmysqlclient.so.18.0.0 libmysqlclient.so ,或者重新命名也行)
批量插入:
//innodb表引擎下關閉mysql自動事務提交可以大大提高資料插入的效率,這是因為如果需要插入1000條資料, mysql會自動發起(提交)1000次的資料寫入請求,如果把autocommit關閉掉,通過程式來控制,只要一 次commit就可以搞定。
autocommit是事務,==1時是立即提交,==0之後遇到commit或rollback才提交。#define write_once_count 1000 //設乙個巨集,表示多少條資料提交一次
int count = 0; //設乙個計數值
mysql_autocommit(mysql,0);//關閉自動提交
sprintf(buf,"insert into dxjl_infobase(date,gpcode,type) values(%d,'%s',%d)",ndate,codes,1);
asc2utf8(buf,buf,sizeof(buf));//轉編碼,將asc轉為utf8 以便資料庫可以識別sql語句
int isuccess = mysql_query(mysql,buf);
if(isuccess !=0)
else
if(write_once_count == count)//每write_once_count條資料提交一次
出了迴圈之後加個判斷,避免最後一次迴圈資料未達到write_once_count,無法commit提交寫庫:
if(0 < count)
mysql批量插入資料 MySQL中批量插入資料
例1 方法一 sql語句操作 delimiter 以delimiter來標記用 表示儲存過程結束 create procedure pre 建立pre 儲存方法 begin declare i int 定義i變數 set i 2 while i 53 do insert into lineinfo ...
mybatis for迴圈批量插入及分批插入
背景是這樣的,在一次多個系統資料同步的時候,資料量較大,一次大概5000條,在同步的時候我採用的批量插入的方法,模擬測試沒問題,但是實際測試卻爆出了stackoverflowerror異常,於是乎,跟了一波 daovoid insertlist listlistdata insert into t ...
C API方式連線mysql資料庫實現增刪改查
1,裝好mysql,新建乙個c 控制台工程 從最簡單的弄起,這個會了,可以往任何c 工程移植 在vs2010中設定,工程 屬性 vc 目錄 包含目錄,將mysql server include的絕對路徑新增進去,例如c program files mysql mysql server 5.6 inc...