c訪問mysql的完整例子

2021-07-27 07:22:45 字數 2616 閱讀 7563

1、手寫安裝帶mysql sdk 的mysql

2、新建控制台專案,專案屬性中把

c:\program files\mysql\mysql server 5.5\include 加入「包含目錄」

把c:\program files\mysql\mysql server 5.5\lib 加入「庫目錄」

3、stdafx.h中加入

#include //注意順序,要放在mysql.h前

#include //控制台專案中要在mysql.h之前include

//注意lib新增到「庫目錄」中,而不是「引用目錄」中

#pragma comment(lib, "libmysql.lib")

4、把libmysql.dll放到生成的exe目錄下

5、主要的幾個例子:

//執行基本查詢

void test1()

mysql_query(pconn,"set names gbk");//防止亂碼。設定和資料庫的編碼一致就不會亂碼

//set names x 相當於 set character_set_client = x;set character_set_results = x;set character_set_connection = x;

//寫set character set gbk;查詢不會亂碼,但是引數化插入會報錯。而set names gbk則都不會亂碼

//mysql_real_query比mysql_query多了個引數: 字串query的長度, 所以適合有二進位制資料的query, 而mysql_query的字串query不能包含二進位制,因為它以\0為結尾

//mysql_query() 不能傳二進位制blob欄位,因為二進位制資訊中的\0會被誤判為語句結束。 mysql_real_query() 則可以。

if(mysql_query(pconn,"select * from persons"))

//mysql_store_result是把查詢結果一次性取到客戶端的離線資料集,當結果比較大時耗記憶體。

//mysql_use_result則是查詢結果放在伺服器上,客戶端通過指標逐行讀取,節省客戶端記憶體。但是乙個mysql*連線同時只能有乙個未關閉的mysql_use_result查詢

mysql_res *result = mysql_store_result(pconn);

mysql_row row;

while(row = mysql_fetch_row(result))

mysql_free_result(result);

mysql_close(pconn);

}//獲得更新行數

void test2()

if(mysql_query(pconn,"update persons set age=age+1"))

printf("更新成功,共更新完成%d條",mysql_affected_rows(pconn));

mysql_close(pconn);

}//獲得自增id

void test3()

mysql_query(pconn,"set names gbk");

if(mysql_query(pconn,"insert into persons(name,age) values('傳智播客',100)"))

printf("執行insert成功,新id=%d",mysql_insert_id(pconn));

mysql_close(pconn);

}//引數化查詢

void test4()

mysql_query(pconn,"set names gbk");

mysql_stmt    *stmt;    

mysql_bind    bind[2];   

memset(bind,0,sizeof(bind));//把is_null、length等字段預設值設定為null等預設值,否則執行會報錯

stmt = mysql_stmt_init(pconn);  

char* insertsql="insert into persons(name,age) values(?,?)";

if (mysql_stmt_prepare(stmt, insertsql, strlen(insertsql)))    

bind[0].buffer_type= mysql_type_string;    

bind[0].buffer= "黑馬";    

bind[0].buffer_length= strlen("黑馬"); //如果設定了buffer_length,則可以不試用length

int age=3;

bind[1].buffer_type= mysql_type_long;    

bind[1].buffer= &age;  

bind[1].buffer_length = sizeof(age);

if (mysql_stmt_bind_param(stmt, bind))    

if (mysql_stmt_execute(stmt))    

mysql_stmt_close(stmt);

mysql_close(pconn);  

printf("引數化執行sql結束");

}

linux下c程式訪問mysql小例子

1 c程式訪問mysql include include include define db server 192.168.10.33 define db name ddource define db user oldboy define db pwd oldboy123 static mysql ...

proc C 的完整小例子

簡單的proc 程式 完整的編譯執行過程 include include include define username name 使用者名稱 define passwd pwd 密碼 define dbname dbname 資料庫名 exec sql include sqlca void sql...

C 呼叫儲存過程簡單完整例子

create proc p test name varchar 20 rowcount intoutput asbegin select from t customer where name name set rowcount rowcount endgo 儲存過程呼叫如下 declare iint...