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...