其實,以前弄過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
