最新消息

[公告2014/05/30] 如有需要將部落格中,任何一篇文章的程式碼使用在商業用途,請與我聯繫。

[公告2015/04/26] Line版的 iInfo程式與投資應用 群組已上線想加入的朋友們,請先查看 "入群須知" 再與我聯繫 Line : aminwhite5168,加入請告知身分與回答 "入群須知" 的問題。

[公告2018/04/22] 台北 Python + Excel VBA 金融資訊爬蟲課程,課程如網頁內容 金融資訊爬蟲班:台北班 Python 金融資訊爬蟲、EXCEL VBA 金融資訊爬蟲

[公告2019/01/08] 請注意:我再次重申,部落格文章的程式碼,是要提供各位參考與學習,一旦網頁改版請自行修改,別要求東要求西要我主動修改,你們用我寫東西賺錢了、交差了,請問有分我一杯羹嗎?既然賺錢沒分我,請問有什麼理由要求我修改,如果沒能力改,就花錢來找我上課。

[公告2019/12/01] 若各位有 Excel VBA 案子開發需求,歡迎與我聯繫,可接案處理。

[公告2020/05/22] 頁面載入速度慢,起因為部分JS來源(alexgorbatchev.com)失效導致頁面載入變慢,目前已做調整,請多見諒。

2012年8月4日 星期六

VC6連結MySQL資料庫的編譯環境建立

Step 1. 安裝完整的MySQL。

Step 2. 確認"C:\Program Files\MySQL\MySQL Server 5.1"路徑下有include、lib的目錄,這個路徑對未來VC要引用MySQL函數庫很重要。


Step 3. 在「VC6」、「Tools」、「Options」、「Directories」分別加入需使用的MySQL的函數庫的include、lib目錄。
在Show directories for選擇include files,新增"C:\Program Files\MySQL\MySQL Server 5.1\INCLUDE"。

在Show directories for選擇Library files,新增"C:\Program Files\MySQL\MySQL Server 5.1\LIB\DEBUG" or "C:\Program Files\MySQL\MySQL Server 5.1\LIB\OPT"。


最後看看測試結果,我們從stock資料庫中取出前10筆資料

使用VC6寫一個簡單的程式去取得這10資料

程式如下
#include <winsock.h>
#include <mysql.h>
#include <windows.h>
#pragma comment(lib, "libmysql.lib")

BOOL main(int argc, TCHAR* argv[])
{
 unsigned short Port = 3306;
 char *IPAddress = "localhost";
 char *UserName = "root";
 char *Password = "51685168";
 char *DBName = "stock";
 unsigned long i;
 printf("Start... \n");

 MYSQL *ssock;
 MYSQL_RES   *res;      
 MYSQL_ROW   row;   

 ssock = (MYSQL *)malloc(sizeof(MYSQL)); 
 
 //在某些版本中,不需要初始化工作,可查看mysql.H以及readme
 /*mysql_init(ssock);
 if(ssock == NULL)
 {
  printf("EROR: MySQL ssock init error. \n");
  return FALSE;
 }*/
 ssock = mysql_init(NULL);
 if(!ssock)
 {
  printf("EROR: MySQL ssock init error. \n");
  return EXIT_FAILURE;
 }
 printf("MySQL ssock init OK. \n");


 //建立與資料庫的連結
 ssock = mysql_real_connect(ssock, IPAddress, UserName, Password, NULL, Port, NULL, 0);
 if(!ssock)
 {
  printf("conn fail... \n");
  unsigned int mtint = mysql_errno(ssock);
  return FALSE;
 }
 printf("MySQL connnect OK... \n");

 mysql_set_character_set(ssock, "uft8");
 //連結指定的資料庫
 if(mysql_select_db(ssock, DBName) != 0)
 {
  printf("select db error. \n");
  return FALSE;
 }
 printf("select db OK. \n");

 //利用SQL語法查詢目前資料庫的版本
 printf("version=%d \n", mysql_get_server_version(ssock));
 
 //SQL查詢語法
 if(mysql_query( ssock, "SELECT * FROM  otc LIMIT 10"))  
 {
  printf("mysql_query() Error, %s\n", mysql_error(ssock));  
 }

 if( !(res = mysql_store_result(ssock)) )  
 {
  printf("mysql_store_result() Error, %s\n", mysql_error(ssock));  
 } 

 while( (row = mysql_fetch_row(res)) )
 {          
  for(i=0 ; i<mysql_num_fields(res); i++)  
  {
   printf("%s ",row[i]);
  }    
  printf("\n");
 }

 //釋放資料庫連線
 mysql_free_result(res);

 //關閉資料庫
 mysql_close(ssock);
 printf("End... \n");

 return TRUE;
}

沒有留言:

張貼留言