VC 連MySQL小記

來源:互聯網
上載者:User

http://www.oklinux.cn/html/sql/other/20080812/59369.html

傳說MySQL效能很好,準備測試一下,如果效果好的話就把資料庫換成MySQL.但沒想到這一弄就折騰了兩個小時.唉!不過還好現在都解決了,恩,現在把前兩個小時裡學到的東西記在這裡,以備不時之需哈

MySQL是開源的,網上很容易就下的到MySQL Dowload.我下的是WINDOWS版的,安裝很簡單,這裡就不多說了,但是別忘了還得下個管理工具.MySQL不像MSSQL那樣帶有圖形介面的管理工具,圖形介面程式它只帶了重新設定MySQL的MySQLInstanceConfig.exe,剩下的就是一堆命令列程式了.說到重新設定MySQL,我得提醒下,MySQLInstanceConfig.exe如果停在了最後一步Start Service那裡報錯的話,就從新安裝MySQL吧,無論怎麼配置都過不了那步.不過具體應該可以手工改好的,不過我沒搞懂哈,直接重裝就好了.MySQL管理工具有很多,還有PHP版的,我用的是MySQL GUI Tools 5.0,算是官方版的吧,挺好用的

MySQL有提供C的API介面,當然我就直接用的它了,因為傳說它比用ADO要快一些.在MySQL的安裝目錄下你會找到include和lib檔案夾(完整安裝模式下),裡面分別是C介面的標頭檔和庫檔案,庫檔案只用libmysql.lib就好了,標頭檔的話代碼裡只需引用mysql.h,當然編譯的時候mysql.h還引用了同目錄下的其它檔案,所以我就把include檔案夾裡的所有檔案都拷貝到VC 的include檔案夾裡的,只把libmysql.lib拷貝到了VC 的lib檔案夾裡.

我建立的是個MFC程式,因為MySQL需要網路支援,所以在MFC程式建立嚮導裡要選上"Windows 通訊端",否則編譯的時候會報SOCKET相關的錯誤(在這裡我折騰了半個小時大概 -.-|||).mysql.h必須在windows.h和sockets標頭檔之後被引用,MFC裡我就把它放到stdafx.h的最後一行了.最後別忘了在連接器參數裡加上libmysql.lib的串連,否則會報錯:XXX函數未聲明.

下面是我用到的MySQL函數:

QUOTE:
MYSQL* mysql_init(NULL) //初始化一個MYSQL對象,後面的操作要用到

MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag) //建立串連,db是要訪問的資料庫,unix_socket和client_flag通常為NULL就可以了.串連成功返回第一個參數,否則失敗

int mysql_query(MYSQL *mysql, const char *stmt_str) //執行一個查詢,成功時返回0

MYSQL_RES *mysql_store_result(MYSQL *mysql) //擷取查詢返回的結果集,失敗時返回0

unsigned int mysql_num_fields(MYSQL_RES *result) //擷取返回結果集的欄位數量

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result) //擷取一行記錄,並將移動到下個記錄,返回NULL時則遍曆完了所有行或出錯.MYSQL_ROW類型是個字串數組,下標為[0,columnLength-1]

void mysql_free_result(MYSQL_RES *result) //釋放結果集

void mysql_close(MYSQL *mysql) //關閉串連

這裡是具體代碼(寫的很粗哈,測試嘛)

QUOTE:
1 MYSQL mysql;
2 mysql_init(&mysql);
3 ASSERT(mysql_real_connect(&mysql, "127.0.0.1", "alacky", "password", "Test", 3306, 0, 0));
4 ASSERT(mysql_query(&mysql, "SELECT * FROM maxTest") == 0);
5 MYSQL_RES *result;
6 result = mysql_store_result(&mysql);
7 MYSQL_ROW row;
8 ULONG colLen = mysql_num_fields(result);
9 CString datas = "";
10 while(row = mysql_fetch_row(result)) // 遍曆每行記錄
11 {
12 for(ULONG i=0; i 13 {
14 datas = row ? row : "NULL";
15 datas = "\t";
16 }
17 datas = "\n\n";
18 }
19 mysql_free_result(result);
20 mysql_close(&mysql);

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.