MFC連接MySQL


其實,以前弄過sql,mysql應該是順理成章很簡單的事情,但很無奈,傻傻地弄了很久,還請教了別人,別人告訴我的跟我在網上查到的都是一樣的,但還是不行,歸根接地就是“mysql-connector-odbc-5.2.4-win32”這個odbc這里版本號出了問題。

自己下載的是MySQL-installer-community-5.6.10.1(含odbc5.2.4),裝完后發現自帶了odbc5.2.4,接下來的操作很自然用了“Driver=MySQL ODBC 5.2 Driver”這里就出問題了,版本號一定要弄清楚,否者肯定要出錯,當然很多人自己下的odbc所以根本不會出這個問題,這里只是一個無知者的提醒。出現的ODBC5.1是自己裝的,你直接用“Driver=MySQL ODBC 5.1 Driver”自然也是沒問題。

一、非ODBC

1.下載mysql數據庫.(mysql-5.1.28-rc-win32)

2.下載與mysql數據庫版本相同的odbc(mysql-connector-odbc-noinstall-5.1.8-win32),兩者版本必須相同,否則會報錯。

3.可以下載MySql-Front工具,可視化對MySql操作。

3.打開MFC程序,在stdafx.h中加入一句:

#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")

4.在要打開的cpp程序中加入以下語句,變量也可定義到頭文件,adModeUnknown是數據庫訪問權限常量,我輸入別的都不行,就輸入這個可以,權限設置還要再學習。

 CoInitialize(NULL);

 _ConnectionPtr pConn;
_RecordsetPtr pRs("ADODB.Recordset");

 pConn.CreateInstance(__uuidof(Connection));
  HRESULT hr=pConn->Open("Driver=MySQL ODBC 5.2wDriver;Server=127.0.0.1;Database=test","root","123456",adModeUnknown);


 pRs->Open("Select * From avInfo",_variant_t(pConn,true),adOpenStatic,adLockOptimistic,adCmdText);

 CString strID= (LPCTSTR)_bstr_t(pRs->GetCollect("FlightNO"));

二、ODBC

跟非odbc的唯一區別在

m_pConnectionPtr->Open("DSN=FEIFEI;Server=localhost;Database=feifei","root","19880512",adModeUnknown);//成功,當然要配置odbc,data source name =FEIFEI

配置如下:

 

 

三、C API方式(自己就沒用過了)

一、環境

編譯環境: VS2008

MySql版本:mysql-5.5.18-win32.msi  

下載地址:點擊打開鏈接 

MYSQL官網,選擇的是MySQL Community Server 

 

二、安裝連接

安裝步驟:資料來源百度文庫或者CSDN下載,貌似百度文庫方便點

VS編譯,提示找不到#include<mysql.h>

通過VC開發MySQL數據庫應用軟件有多種方式:   

  一、通過MyODBC界面  
  二、通過Connector/C++l界面   
  三、通過MySQL CAPI界面  
  四、第三方封裝的MySQL類   
    
  在經過反復比較,我還是選擇了MySQLC API方式來進行MySQL的開發。   
  在VC中使用MySQL的步驟如下:   
    
  1、下載MySQL的服務器/客戶端安裝包   
  官方下載地址如下:  
  http://www.mysql.com/downloads/mysql-4.0.html   
  由於我的開發環境是Windows,所以我下載的是MySQL for Windows V4.0.12  
    
  2、安裝MySQL服務器/客戶端包   
  一般情況,選擇下一步就行了。  
  默認情況,MySQL會安裝到C:\mysql下。   
    
  3、在VC中設置其開發環境   
  [選項/項目/VC目錄]   
  a.設置包含路徑為c:\mysql\include  
  b.設置引用路徑為c:\mysql\include  
  c.設置庫路徑為c:\mysql\lib\debug  

 a、b、c均不可少
  [項目屬性]  
  d.在設置鏈接器-輸入-附加依賴項為libmySQL.lib   

  在stdafx.h中加入以下行:   
  #include <winsock.h>   
  #include "mysql.h"   

 或者不需要設置鏈接器,可在stdxfx.h需多添加一行,等同效果

#pragmacomment(lib,"libmysql.lib")    

  4、至此就可以使用C API函數進行開發了。

 

 FAQ:   
  1.若出現無法使用mysql.h定義的類型的錯誤時,可重新生成工程即可.      
  2.若出現鏈接錯誤,可將libmySQL.dll文件拷貝到工程當前目錄下.   

 

三、Mysql API函數

  MySQL提供了很多函數來對數據庫進行操作,大致可以分為以下幾類:      
  第一部分 控制類函數   
    
  mysql_init()初始化MySQL對象  
  mysql_options()設置連接選項   
  mysql_real_connect()連接到MySQL數據庫      
  mysql_real_escape_string()將查詢串合法化   
  mysql_query()發出一個以空字符結束的查詢串   
  mysql_real_query()發出一個查詢串       
  mysql_store_result()一次性傳送結果   
  mysql_use_result()逐行傳送結果       
  mysql_free_result()釋放結果集       
  mysql_change_user()改變用戶   
  mysql_select_db()改變默認數據庫       
  mysql_debug()送出調試信息   
  mysql_dump_debug_info()轉儲調試信息       
  mysql_ping()測試數據庫是否處於活動狀態   
  mysql_shutdown()請求數據庫SHUTDOWN       
  mysql_close()關閉數據庫連接   


  第二部分 信息獲取類函數   
  mysql_character_set_name()獲取默認字符集   
  mysql_get_client_info()獲取客戶端信息   
  mysql_host_info()獲取主機信息   
  mysql_get_proto_info()獲取協議信息   
  mysql_get_server_info()獲取服務器信息   
  mysql_info()獲取部分查詢語句的附加信息   
  mysql_stat()獲取數據庫狀態       
  mysql_list_dbs()獲取數據庫列表   
  mysql_list_tables()獲取數據表列表   
  mysql_list_fields()獲取字段列表   
    
  第三部分 行列類操作函數   
  mysql_field_count()獲取字段數   
  mysql_affected_rows()獲取受影響的行數   
  mysql_insert_id()獲取AUTO_INCREMENT列的ID值      
  mysql_num_fields()獲取結果集中的字段數   
  mysql_field_tell()獲取當前字段位置   
  mysql_field_seek()定位字段   
  mysql_fetch_field()獲取當前字段   
  mysql_fetch_field_direct()獲取指定字段   
  mysql_frtch_fields()獲取所有字段的數組     

  mysql_num_rows()獲取行數   
  mysql_fetch_lengths()獲取行長度   
  mysql_row_tell()獲取當前行位置   
  mysql_row_seek()行定位   
  mysql_data_seek()行定位   
  mysql_fetch_row()獲取當前行   
    
    
  第四部分 線程類操作函數   
  mysql_list_processes()返回所有線程列表   
  mysql_thread_id()獲取當前線程ID   
  mysql_thread_safe()是否支持線程方式   
  mysql_kill()殺列一個線程   
    
    
  第五部分 出錯處理類函數   
  mysql_errno()獲取錯誤號   
  mysql_error()獲取錯誤信息   
    
  第六部分 已過時的函數   
  mysql_connect()   
  mysql_create_db()   
  mysql_drop_db()   
  mysql_eof()   
  mysql_reload()   
  mysql_escape_string()   

 收集相關文章地址:

1、《vs2008下c++鏈接mysql》   http://blog.csdn.net/luxiaoshuai/article/details/5644745

2、《vc但文件連接mysql實例,丟掉libmysql.dll》 http://blog.csdn.net/zwfgdlc/article/details/5556654

3、   《vs2008連接MySQL,采用C API方式http://blog.csdn.net/sciland/article/details/4274364

 

以上轉自:http://blog.csdn.NET/sciland/article/details/4274364

另外,MySQL的語法大全也非常值得一看:http://wenku.baidu.com/view/29648f2458fb770bf78a552f.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM