VC 訪問mysql數據庫

建立數據源: 

      開始菜單->設置->控制面板->管理工具->數據源(ODBC)->系統DSN->添加->選擇MySQL ODBC 3.51 Driver(我下載的MyODBC版本是3.51)

      然後在出現的Connector/ODBC Configure Data Source Name對話框中輸入

      Data Source Name---------ADOLinkMySQL    //數據源名稱

      Server-------------------localhost      //數據庫服務器名稱

      User---------------------root           //用戶名(MySQL默認的用戶名是root)

      Password-----------------123456         //密碼(由MySQL root用戶管理)

      DataName-----------------adolinkmysql   //你剛纔建立的數據庫名稱

   輸入以後,點擊Test。如果出現Success;connection was made!表示建立數據源成功,即可 繼續下一步

      4,最後應用程序就可以通過ADO來訪問MySQL了。注意在連接數據庫中要用以下代碼來連接

         _ConnectionPtr m_pConnection;

         m_pConnection->Open("DSN=ADOLinkMySQL;",    /*數據源名稱*/
                                      "root",           /*用戶*/
                                     "123456",0);      /*密碼*/

 

 

VC環境下使用mysql API函數訪問MySQL數據庫

 

1.       安裝MySQL的完整版;(在安裝過程中可以選擇)

 

2.       將C:\Program Files\MySQL\MySQL Server 5.0\lib\opt目錄下的“libmysql.lib”文件複製到創建的VC工程目錄下;

 

3.       程序中包括頭文件,連入庫文件:

#include <winsock.h>

#include "C:\Program Files\MySQL\MySQL Server 5.0\include\mysql.h"(數據庫的安裝路徑)

 

#pragma comment(lib,"libmysql.lib")

 

4.       程序例子

#include "stdafx.h"

#include <winsock.h>

#include "C:\Program Files\MySQL\MySQL Server 5.0\include\mysql.h" 

#pragma comment(lib,"libmysql.lib") 

int main(int argc, char* argv[])

{

        MYSQL mysql;

         MYSQL_RES *result;

         MYSQL_ROW row;

         mysql_init(&mysql); //初始化mysql結構

         if(!mysql_real_connect(&mysql,"MyXp","UserDB","123456","userdata",0,NULL,0))//連接服務器

         {

                   fprintf(stderr,"Failed to connect to database: Error: %s\n",

                            mysql_error(&mysql));

         }

//////////////////////////////////////////////////////////////////////////

/////////////////////////插入數據/////////////////////////////////////////        

if(mysql_query(&mysql,"insert into UserDataTable values('rm','209','209','[email protected]',

'23213','yjiang','26.222.171.2','2010-04-01 10:53:12')"))//進行查詢

         {

              fprintf(stdout,"mysql_query() insert failed!\n");

         }    

         //////////////////////////////////////////////////////////////////////////

         ///////////////////////////////  查詢數據  ///////////////////////////////                 

         if(mysql_query(&mysql,"select * from UserDataTable"))

         {

             fprintf(stdout,"mysql_query() select failed!\n");

         }

         result = mysql_store_result(&mysql);//讀取一個到客戶的查詢的全部結果,

         //分配一個MYSQL_RES結構,並且把結果放進這個結構中。(獲得結果集)

         while (row = mysql_fetch_row(result))//取出結果集中記錄

         {

fprintf(stdout,"UserName:%s password: %s Email:%s City:%s \n",row[0],row[1],row[3],row[5]);//輸出這行記錄

         }

          mysql_free_result(result);   //釋放結果集

           //////////////////////////////////////////////////////////////////////////

           //////////////////////////刪除數據///////////////////////////////////    

           if(mysql_query(&mysql,"delete from UserDataTable where UserName = 'chz'"))

           {

            fprintf(stdout,"mysql_query() delete failed!\n");

           }  

      //////////////////////////////////////////////////////////////////////////

      /////////////////////////////更新數據/////////////////////////////////////

      if(mysql_query(&mysql,"update UserDataTable set PassWord = 'lyj0662',ConPass = 'lyj0662' where UserName = 'lyj'"))

           {

                      fprintf(stdout,"mysql_query() updata failed!\n");

           } 

          mysql_close(&mysql);//釋放連接

         return 0;

}

補充回答:

VC ADO鏈接MySql數據庫

ODBC方式鏈接。

1、應用程序的stdafx.h頭文件中(也可以在其他合適的地方)包含如下語句。

#import "C:\\program files\\commonfiles\\system\\ado\\msado15.dll" no_namespacerename ("EOF","adoEOF")

 

2、鏈接數據庫

CoInitialize(NULL);                                          //初始化Com組件

_ConnectionPtr conPtr;                                      //數據庫鏈接指針

     //conPtr.CreateInstance("ADODB.Connection");           //Connection用於與數據庫服務器的鏈接

     conPtr.CreateInstance(__uuidof(Connection));            //Connection用於與數據庫服務器的鏈接另一種方式

     /******************連接數據庫********************/

     try

     {

         conPtr->ConnectionTimeout = 5;                          //設置連接時間

         // MySqlTest爲數據源名 localhost表示本地root表示用戶名 sa表示密碼

         //鏈接方式1,使用這種方式鏈接時要注意在設置數據源時一定要選擇一個數據庫

         //conPtr->Open("DSN=MySqlTest;server=localhost;","root","sa",adModeUnknown);///連接MySql數據庫(測試成功)

         //鏈接方式2採用這種方式鏈接時在創建數據源時沒有必要選擇一個數據庫          conPtr->Open("DSN=MySqlTest;server=localhost;database=test;","root","sa",adModeUnknown);///連接MySql數據庫(測試成功)

     }

     catch(_com_error e)                                              //捕捉異常

     {

         AfxMessageBox(e.ErrorMessage());

     }

     CoUninitialize();                                       //釋放com組件//不知是否有必要

    

3、訪問數據庫

_RecordsetPtr recordPtr;//數據集指針

recordPtr.CreateInstance(__uuidof(Recordset));

CString cmdStr=_T("selectname,stuno from student");//student爲表名 該表中有兩個字段name(字符型)stuno(int型)

     try

     {

              recordPtr->Open(_variant_t(cmdStr),

              conPtr.GetInterfacePtr(),

              adOpenDynamic,

              adLockOptimistic,

              adCmdText);

     }

     catch(_com_error e)

     {

         AfxMessageBox(e.Description());

     }

     while(!(recordPtr->adoEOF))

     {//獲取記錄

         CStringname=(CString)recordPtr->GetCollect(_variant_t("name")).bstrVal;

         intno=recordPtr->GetCollect(_variant_t("stuno")).intVal;

         recordPtr->MoveNext();

     }

     recordPtr->Close();//關閉記錄集

     recordPtr.Release();//釋放空間

     conPtr->Close();//關閉連接

     conPtr.Release();//釋放空間

 

非ODBC方式鏈接。

 

鏈接數據庫

CoInitialize(NULL);                                          //初始化Com組件

_ConnectionPtr conPtr;                                       //數據庫鏈接指針

     //conPtr.CreateInstance("ADODB.Connection");            //Connection用於與數據庫服務器的鏈接

     conPtr.CreateInstance(__uuidof(Connection));            //Connection用於與數據庫服務器的鏈接另一種方式

// MySQL ODBC 5.1 Driver爲驅動名稱(取決於我們爲MySql安裝的驅動),localhost爲服務器地址,test爲數據庫名,root爲用戶名(MySql默認用戶名爲root),sa爲密碼

     CStringconStr=_T("Driver={MySQL ODBC 5.1 Driver };Server= localhost;Database=test;");

     /******************連接數據庫********************/

     try

     {

         conPtr->ConnectionTimeout = 5;                          //設置連接時間

         conPtr->Open((_bstr_t)conStr, _T("root"),_T("sa"), adModeUnknown);

     }

     catch(_com_error e)                                              //捕捉異常

     {

         AfxMessageBox(e.ErrorMessage());

     }

     CoUninitialize();                                       //釋放com組件

獲取記錄集

獲取記錄集的方式與ODBC方式相同

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章