C 操作mysql資料庫

2021-08-20 04:57:14 字數 4699 閱讀 6361

採用c++封裝mysql提供的常用庫函式,實現對mysql資料庫的訪問。

版本歷史

1、建立表的示例程式 createtable.cpp

//// 本程式演示建立乙個表,用於存放商品資訊。

//#include "freemysql.h"

int main(int argc,char *argv)

// 設定字符集為'gbk',與mysql資料庫的字符集要相同,否則中文會出現亂碼

conn.character("gbk");

// 為sqlstatement指定資料庫連線池,不需要判斷返回值

stmt.connect(&conn);

// 為sqlstatement指定資料庫連線池,不需要判斷返回值

stmt.connect(&conn);

// 準備建立表的sql,商品表:商品編號id,商品名稱name,**sal

// 入庫時間btime,商品說明memo,商品pic

// prepare方法不需要判斷返回值

stmt.prepare("\

create table goods(id    bigint(10),\

name  varchar(30),\

sal   decimal(8,2),\

btime datetime,\

memo  longtext,\

pic   longblob,\

primary key (id))");

// 執行sql語句,一定要判斷返回值,0-成功,其它-失敗。

if (stmt.execute() != 0)

printf("create table goods ok.\n");

exit(0);

}2、向表中插入記錄的示例程式 inserttable.cpp

//// 本程式演示向商品表中插入10條記錄。

//#include "freemysql.h"

// 定義用於運算元據的結構,與表中的字段對應

struct st_goods

stgoods;

int main(int argc,char *argv)

// 設定字符集為'gbk',與mysql資料庫的字符集要相同,否則中文會出現亂碼

conn.character("gbk");

// 為sqlstatement指定資料庫連線池,不需要判斷返回值

stmt.connect(&conn);

// 準備插入資料的sql,不需要判斷返回值

stmt.prepare("\

insert into goods(id,name,sal,btime) \

values(?,?,?,str_to_date(?,'%%y-%%m-%%d %%h:%%i:%%s'))");

// 為sql語句繫結輸入變數的位址

stmt.bindin(1,&stgoods.id);

stmt.bindin(2, stgoods.name,30);

stmt.bindin(3,&stgoods.sal);

stmt.bindin(4, stgoods.btime,19);

// 模擬商品資料,向表中插入10條測試資訊

for (int ii=1;ii<=10;ii++)

printf("insert ok(id=%d).\n",ii);

}printf("insert table goods ok.\n");

// 提交資料庫事務

conn.commit();

exit(0);

}3、查詢表中記錄的示例程式 selecttable.cpp

//// 本程式演示從商品表中查詢資料

//#include "freemysql.h"

// 定義用於查詢資料的結構,與表中的字段對應

struct st_goods

stgoods;

int main(int argc,char *argv)

// 設定字符集為'gbk',與mysql資料庫的字符集要相同,否則中文會出現亂碼

conn.character((char*)"gbk");

// 為sqlstatement指定資料庫連線池,不需要判斷返回值

stmt.connect(&conn);

int iminid,imaxid;

// 準備查詢資料的sql,不需要判斷返回值

stmt.prepare("\

select id,name,sal,date_format(btime,'%%y-%%m-%%d %%h:%%i:%%s')\

from goods where id>:1 and id<:2");

// 為sql語句繫結輸入變數的位址

stmt.bindin(1,&iminid);

stmt.bindin(2,&imaxid);

// 為sql語句繫結輸出變數的位址

stmt.bindout(1,&stgoods.id);

stmt.bindout(2, stgoods.name,30);

stmt.bindout(3,&stgoods.sal);

stmt.bindout(4, stgoods.btime,19);

// 手工指定id的範圍為1到8,執行一次查詢

iminid=1;

imaxid=8;

// 執行sql語句,一定要判斷返回值,0-成功,其它-失敗。

if (stmt.execute() != 0)

while (1)

// 請注意,stmt.m_cda.rpc變數非常重要,它儲存了sql被執行後影響的記錄數。

printf("本次查詢了goods表%ld條記錄。\n",stmt.m_cda.rpc);

exit(0);

}  4、更新表中記錄的示例程式 updatetable.cpp

//// 本程式演示更新商品表中資料

//#include "freemysql.h"

int main(int argc,char *argv)

// 設定字符集為'gbk',與mysql資料庫的字符集要相同,否則中文會出現亂碼

conn.character("gbk");

// 為sqlstatement指定資料庫連線池,不需要判斷返回值

stmt.connect(&conn);

int iminid,imaxid;

char strbtime[20];

// 準備更新資料的sql,不需要判斷返回值

stmt.prepare("\

update goods set btime=str_to_date(?,'%%y-%%m-%%d %%h:%%i:%%s') where id>? and id<?");

// 為sql語句繫結輸入變數的位址

stmt.bindin(1, strbtime,19);

stmt.bindin(2,&iminid);

stmt.bindin(3,&imaxid);

// 手工指定id的範圍為1到5,btime為2017-12-20 09:45:30,執行一次更新

iminid=1;

imaxid=5;

memset(strbtime,0,sizeof(strbtime));

strcpy(strbtime,"2017-12-20 09:45:30");

// 執行sql語句,一定要判斷返回值,0-成功,其它-失敗。

if (stmt.execute() != 0)

// 請注意,stmt.m_cda.rpc變數非常重要,它儲存了sql被執行後影響的記錄數。

printf("本次更新了goods表%ld條記錄。\n",stmt.m_cda.rpc);

// 提交事務

conn.commit();

exit(0);

}5、刪除表中記錄的示例程式 deletetable.cpp

//// 本程式演示刪除商品表中資料

//#include "freemysql.h"

int main(int argc,char *argv)

// 設定字符集為'gbk',與mysql資料庫的字符集要相同,否則中文會出現亂碼

conn.character("gbk");

// 為sqlstatement指定資料庫連線池,不需要判斷返回值

stmt.connect(&conn);

int iminid,imaxid; 

// 準備刪除資料的sql,不需要判斷返回值

stmt.prepare("delete from goods where id>? and id<?");

// 為sql語句繫結輸入變數的位址

stmt.bindin(1,&iminid);

stmt.bindin(2,&imaxid);

// 手工指定id的範圍為1到5

iminid=1;

imaxid=5;

// 執行sql語句,一定要判斷返回值,0-成功,其它-失敗。

if (stmt.execute() != 0)

// 請注意,stmt.m_cda.rpc變數非常重要,它儲存了sql被執行後影響的記錄數。

printf("本次從goods表中刪除了%ld條記錄。\n",stmt.m_cda.rpc);

// 提交事務

conn.commit();

exit(0);

}

c 操作mysql資料庫

include include stdio.h include winsock.h include mysql.h int main else else sprintf tmp,update s set 商品 s 賣出 d,成交 d,漲跌 d,買進 d,總量 d,漲幅 f,時間 s where s ...

c 操作MySql資料庫

需要mysql.data.dll 資料庫連線 server資料庫位址,user資料庫使用者名稱,password密碼,database資料庫名 string connectstring string.format server user id password database server,use...

C 操作MYSQL資料庫

1.安裝mysql 略2.建立c 控制台程式,新建cpp原始檔,如 sqlconn.cpp 3.在工程專案中屬性 c c 常規 附加包含目錄中新增mysql安裝目錄中的mysql mysql mysql server 5.7 include 4.新增庫目錄 5.新增依賴項 libmysql.lib ...