怎樣用c/c++程式設計連線mysql資料庫?

noter發表於2007-06-04

怎樣用c/c++程式設計連線mysql資料庫?

樓主gaohengwei()2002-11-15 15:59:42 在 Linux/Unix社群 / 程式開發區 提問

用c/c++連mysql資料庫一般用哪些方法,有沒有類似vc用的mysql++類庫,或者delphi開發常用的mysql控制元件什麼的?在哪裡能找到些這方面的資料? 問題點數:20、回覆次數:4Top

1 樓CDSoftwareWj(95927)回覆於 2002-11-15 16:04:10 得分 0

你可以試試Kylix的dbExpress   ^^Top

2 樓x86(大雪)回覆於 2002-11-15 18:24:30 得分 10

http://www.mysql.com/doc/en/C.html  
   
  [轉貼自http://homepage.qdcatv.com.cn/antonio/mysql/mysql.htm]  
   
  執行一個查詢有以下幾個步驟要做。首先執行一個查詢,然後儲存結果,  
  得到的是一個子集。這裡是一個小例子:  
   
  #include    
  #include    
  #include   "mysql.h"  
   
  MYSQL   mysql;  
  MYSQL_RES   *res;  
  MYSQL_ROW   row;  
   
  void   exiterr(int   exitcode)  
  {  
  fprintf(   stderr,   "%s/n",   mysql_error(&mysql)   );  
  exit(   exitcode   );  
  }  
   
  int   main()  
  {  
  uint   i   =   0;  
   
  if   (!(mysql_connect(&mysql,"host","username","password")))    
  exiterr(1);  
   
  if   (mysql_select_db(&mysql,"payroll"))  
  exiterr(2);  
   
  if   (mysql_query(&mysql,"SELECT   name,rate   FROM   emp_master"))  
  exiterr(3);  
   
  if   (!(res   =   mysql_store_result(&mysql)))  
  exiterr(4);  
   
  while((row   =   mysql_fetch_row(res)))   {  
  for   (i=0   ;   i   <   mysql_num_fields(res);   i++)    
  printf("%s/n",row[i]);  
  }  
   
  mysql_free_result(res);  
  mysql_close(&mysql);  
  }  
   
   
  mysql_query   函式將把查詢送給伺服器,如果查詢成功,呼叫mysql_store_result  
  函式將分配一個MYSQL_RES   結構並且重新從伺服器獲得一個結果集。你可以用    
  mysql_fetch_row   函式來檢視資料。這樣做你將獲得一個   MYSQL_ROW   指標指向數  
  據中的一行。   MYSQL_ROW   指標是一簡單的字串陣列。所有的資料型別被轉換成  
  字串送到客戶端。  
     
   
  mysql_num_fields   函式將告訴你返回的列數。你可以繼續呼叫   mysql_fetch_row  
  直到它返回一個空指標以得到查詢中的每一行。  
   
  注意在這個例子裡,我們沒有檢查有空指標的列。如果你不使用非空列的表,那麼  
  你必須檢查一個特殊行的列是否為空。  
   
  一旦你使用完畢一個結果集,你必須釋放它。這通過   mysql_free_result   來完成。  
   
  最後呼叫   mysql_close   來關閉你和資料庫之間的連線。  
   
  檢視結果集  
   
  你可以不用呼叫   mysql_fetch_row   就查出返回的結果集共有多少行。這由  
  int   mysql_num_rows(MYSQL_RES   *result)來完成。  
  改變到被下一個   mysql_fetch_row   呼叫返回的行,你可以用    
  void   mysql_data_seek(MYSQL_RES   *res,   uint   offset)   改變到任意一行。  
   
  獲得更多的資訊  
   
  你可以使用這幾個額外的函式來找出關於一個查詢的更多的資訊,並從伺服器獲得  
  這些資訊。  
  如果你執行一個UPDATE,   INSERT   或者   DELETE   查詢,你可以用    
  int   mysql_affected_rows   來查出共有多少行資料被你影響到。  
  如果在你的資料庫裡有二進位制資料,那麼得知資料的長度將是有用的。unsigned    
  int   *mysql_fetch_lengths(MYSQL_RES   *mysql)   將返回一指出了結果集中每一列  
  的長度的整型陣列。  
   
  當你插入一個帶有   AUTO_INCREMENT   列的表的時候,你可以用    
  int   mysql_insert_id(MYSQL   *mysql)   來查出生成的那一行的ID。  
   
  Top

3 樓RedHatshu(我還小)回覆於 2002-11-15 19:20:16 得分 10

我連過成功了!  
   
  #include   "/include/mysql/mysql.h"   /*為絕對路徑*/    
  #include   <stdio.h>    
   
  int   main(int   argc,char   *argv[])    
  {    
  char   *user   =   "root",   *pwd   =   "mysql",   *dbname   =   "mysql";    
  MYSQL   mysql;    
  MYSQL_RES   *mysql_ret;    
  MYSQL_ROW   mysql_row;    
  unsigned   long   num_rows;    
  int   ret;    
   
  mysql_init(&mysql);    
   
  if(mysql_real_connect(&mysql,NULL,user,pwd,dbname,0,NULL,0))    
  {    
  printf("Connection   success!/n");    
  ret   =   mysql_query(&mysql,"select   *   from   user");    
  if(!ret)    
  {    
  printf("Query   Success!/n");    
  mysql_ret   =   mysql_store_result(&mysql);    
  if(mysql_ret   !=   NULL)    
  {    
  printf("Store   Result   Success!/n");    
  num_rows   =   mysql_num_rows(mysql_ret);    
  if(num_rows   !=   0)    
  {    
  printf("%d/n",num_rows);    
  while(mysql_row   =   mysql_fetch_row(mysql_ret))    
  {    
  printf("%s/t%s/t%s/t%s/t%s/t%s/n",mysql_row[0],mysql_row[1],mysql_row[2],mysql_row[3],mysql_row[4],mysql_row[5]);    
  }    
  }    
  else    
  {    
  printf("mysql_num_rows   Failed!/n");    
  exit(-1);    
  }    
  mysql_free_result(mysql_ret);    
  exit(0);    
  }    
  else    
  {    
  printf("Store   Result   Failed!/n");    
  exit(-1);    
  }    
  }    
  else    
  {    
  printf("Query   Failed!/n");    
  exit(-1);    
  }    
  }    
  else    
  {    
  printf("Connection   Failed/n");    
  exit(-1);    
  }    
  }    
  如果你包含了正確的標頭檔案而在連線的時候,   告訴你沒有符號連線    
  你應該連線你需要的庫    
   
  我的/lib/mysql/libmysqlclient.so下面    
  gcc   -L/lib/mysql   -lmysqlclient   -o   tes   tes.c   進行編譯  
   
   
  RedHat_shu@hotmail.com

【來源】

相關文章