天天看點

Mysql ODBC 32 位程式驅動 安裝指南

這裡說的是32位驅動安裝,64位請安裝64位驅動(情況類似)。

  1. 使用32位msado15.dll 連接配接的程式,需要手動安裝mysql odbc的驅動。否則會提示驅動與本機不比對
    Mysql ODBC 32 位程式驅動 安裝指南
  2. 系統DSN中添加 資料源
    Mysql ODBC 32 位程式驅動 安裝指南
  3. 添加驅動源,需要填入你的root賬戶ansi /unicode 各填一份
    Mysql ODBC 32 位程式驅動 安裝指南
    Mysql ODBC 32 位程式驅動 安裝指南
  4. 安裝完後可以用程式測試是否正常連接配接
  5. Mysql ODBC 32 位程式驅動 安裝指南

。下面是測試代碼。

#pragma once

#pragma warning( disable : 4146 )

//導入ADO庫,位置在計算機c盤

#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF") //32位系統加上這個

//#import "c:\Program Files (x86)\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") rename("BOF","adoBOF") //64位系統加上這個

class CADOConn

{

public:

 CADOConn(void);

 ~CADOConn(void);

public:

 //添加一個指向Connection對象的指針:

 _ConnectionPtr m_pConnection;

 //添加一個指向Recordset對象的指針:

 _RecordsetPtr m_pRecordset;

 // 定義方法

public:

 // 初始化—連接配接資料庫

 void OnInitADOConn();

 // 執行查詢

 _RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);

 // 執行SQL語句,Insert Update _variant_t

 BOOL ExecuteSQL(_bstr_t bstrSQL);

 void ExitConnect();

};

#include "stdafx.h"

#include "ADOConn.h"

CADOConn::CADOConn(void)

{

}

CADOConn::~CADOConn(void)

{

}

void  CADOConn::OnInitADOConn()

{

 // 初始化OLE/COM庫環境

 ::CoInitialize(NULL);

 HRESULT hr;

 try

 {

  // 建立Connection對象,可以通過配置檔案擷取連接配接資訊

  hr = m_pConnection.CreateInstance(__uuidof(Connection));

  if (SUCCEEDED(hr))

  {

   m_pConnection->ConnectionTimeout = 600;//設定連接配接逾時時間

   m_pConnection->CommandTimeout = 120;//設定執行指令逾時時間

   m_pConnection->Open("DSN=mysqla;Server= 192.168.0.99;Database=mydb", "root", "root123", adModeUnknown);

   //mysqla是設定好的Data Soure Name

   //Server= localhost 本機

   //Database=home,home是用mysql建立的資料庫

   //root和root123别是登入mysql資料庫的使用者名和密碼

  }

 }

 // 捕捉異常

 catch (_com_error e)

 {

  // 顯示錯誤資訊

  MessageBoxW(NULL,e.Description(),L"",MB_OK);//需要建立MFC工程,但我這裡是控制台工程,就把它注釋掉了,下同

  return;

 }

 MessageBoxW(NULL,L"connect success", L"", MB_OK);//需要建立MFC工程,但我這裡是控制台工程,就把它注釋掉了,下同

}

_RecordsetPtr&  CADOConn::GetRecordSet(_bstr_t bstrSQL)

{

 try

 {

  // 連接配接資料庫,如果Connection對象為空,則重新連接配接資料庫

  if (m_pConnection == NULL)

   OnInitADOConn();

  if (m_pRecordset == NULL)

  {

   m_pRecordset.CreateInstance(__uuidof(Recordset));

  }

  if( adStateOpen & m_pRecordset->GetState() )

    m_pRecordset->Close();

  // 建立記錄集對象

  // 取得表中的記錄

  HRESULT hr = m_pRecordset->Open(bstrSQL, m_pConnection.GetInterfacePtr(), adOpenForwardOnly, adLockPessimistic, adCmdText);

  if (SUCCEEDED(hr))

  {

   // 如果記錄不為空 則傳回,否則傳回null

   if( VARIANT_FALSE ==m_pRecordset->adoEOF || 1)

   {

    return m_pRecordset;

   }

   else

   {

    m_pRecordset->Close();

   }

  }

 }

 // 捕捉異常

 catch (_com_error e)

 {

  // 顯示錯誤資訊

  MessageBoxW(NULL, e.Description(), L"", MB_OK);

  return (_RecordsetPtr)NULL;

 }

 // 傳回記錄集

 return (_RecordsetPtr)NULL;

}

BOOL CADOConn::ExecuteSQL(_bstr_t bstrSQL)

{

 // _variant_t RecordsAffected;

 try

 {

  // 是否已經連接配接資料庫

  if (m_pConnection == NULL)

   OnInitADOConn();

  // Connection對象的Execute方法:(_bstr_t CommandText,

  // VARIANT * RecordsAffected, long Options )

  // 其中CommandText是指令字串,通常是SQL指令。

  // 參數RecordsAffected是操作完成後所影響的行數,

  // 參數Options表示CommandText的類型:adCmdText-文本指令;adCmdTable-表名

  // adCmdProc-存儲過程;adCmdUnknown-未知

  m_pConnection->Execute(bstrSQL, NULL, adCmdText);

  return true;

 }

 catch (_com_error e)

 {

  //AfxMessageBox(e.Description());

  return false;

 }

}

void CADOConn::ExitConnect()

{

 // 關閉記錄集和連接配接

 if (m_pRecordset != NULL)

 {

  m_pRecordset->Close();

  //m_pRecordset->Release();

 }

 m_pConnection->Close();

 //m_pConnection->Release();

 // 釋放環境

 ::CoUninitialize();

}

繼續閱讀