vc控制台程式串連oracle關鍵問題

來源:互聯網
上載者:User

最近在用vc6開發一個控制台程式串連oracle資料庫,程式編譯通過,但運行是,建立_ConnectionPtr時總是建立不成功,現終於找到了問題所在,下面是測試成功的代碼。

 

#include <iostream>
#include <afx.h>
#include "main.h"
//#import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","adoEOF")

using namespace std;

 

void main()
{
 ::CoInitialize(NULL);
 _ConnectionPtr myConn;
 myConn.CreateInstance("ADODB.Connection");

 //微軟提供連接字串
 char strConn[] = {"Provider=MSDAORA;Data Source=oracle;User ID=system; Password=zjzjzh;"};
 
 HRESULT hr = myConn->Open((_bstr_t)strConn,"","",adConnectUnspecified);
 if(FAILED(hr))
 {
   //AfxMessageBox("串連資料庫錯誤");
   cout<<"串連資料庫錯誤"<<endl;
   return;
 }

 //開啟一個串連
 _RecordsetPtr myRecord;
 myRecord.CreateInstance("ADODB.Recordset");

 //開啟結果集
 myRecord->Open("SELECT * FROM HR.JOBS",myConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

 //操作結果集
 VARIANT var;
 VariantInit(&var);

 CString strJobId;
 while(myRecord->adoEOF == FALSE)
 {
  var = myRecord->GetCollect("JOB_ID");

  if(var.vt != VT_NULL)
  {
   strJobId = (LPCSTR)(_bstr_t)var;
   //AfxMessageBox(strJobId);
   cout<<strJobId.GetBuffer(strJobId.GetLength())<<endl;
   myRecord->MoveNext();
  }
 }
 //結構使用完成關閉結果集
 if(myRecord->State == TRUE)
 {
  myRecord->Close();
 }
 myRecord = NULL;

 //關閉資料庫連接
 if(myConn->State == TRUE)
 {
  myConn->Close();
 }
 myConn = NULL;
 CoUninitialize();

}
問題出在,在初始化ole庫的時候,不能使用afxoleinit函數,要用CoInitialize,否則在下面的建立串連和結果集對象都會建立不成功。

 

另:1、若要在控制台程式中加入mfc的的非ui類,可以包含afx。h標頭檔,並在項目設定的編譯選項裡選擇/MD選項就可以了,

2、若包含了iostream標頭檔,則引入語句一定要在using namespace std的前面,否則編譯的時候會出現錯誤。

以上是我在開發oracle程式的時候的一些體會,希望對大家有所協助。

 

開發mfc的程式沒有這樣的問題。

 

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/zjwhcn/archive/2009/06/03/4239414.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.