1、 環境
WindowXP+Oracle10g+VC6。
2、 設定Include files及Library files
打開VC6開發環境窗口,點擊菜單“Tools->Options”,如下圖示:
圖(1)
彈出選項窗口,點擊“Directories”選項卡,分別加入如圖(2),圖(3)示目錄:
圖(2)
這一步實際上是設置Oci/Occi的include路徑。
圖(3)
這一步實際上Oci/Occi的Library路徑。以上這兩步是最基本的路徑設置,也就相當於環境變量中的path設置這一項。是不是必須配置你自己試試看。
3、 工程設置
打開一個工程,按如下圖點擊:
圖(4)
選擇C/C++選項卡,按如下圖示加入WIN32COMMON,_DLL,_MT如下圖示:
圖(5)
選擇分類下拉選項中Code Generation項,再選擇Use run-time library下拉選項中Multithreaded DLL(推薦選項)或Debug Multithreaded DLL。否則程序運行時會報一些Link錯誤。
選擇“Link”選項卡,完成如下圖所示配置:
圖(6)
在“對象/庫模塊”中加入oci.lib oraocci10.lib ociw32.lib這三個庫,否則在executeQuery()後檢索取得getString()時會報錯。
4、 配置完成
完成配置後編寫一個測試代碼如下:
string username="suncs";
string password="scs";
string constr="192.168.0.225:1521/orcl";
try{
Environment *env=Environment::createEnvironment(Environment::OBJECT);
Connection *conn = env->createConnection(username,password,constr);
cout <<"hello world..."<<endl;
Statement *stmt = conn->createStatement("insert into s values(22,'55555')");
stmt->executeUpdate();
conn->terminateStatement(stmt);
env->terminateConnection(conn);
Environment::terminateEnvironment(env);
}catch(SQLException excp){
cout <<"exception:" <<excp.what()<<endl;
}
注:1、編譯通過但是運行時總是彈出一個錯誤,說我的字符串長度超過了255
2、原因是oracle10.2.0以後的客戶端版本與vc6裏面的string不兼容
3、下載對應的instantclient-basic-win32-10.1.0.5-20060419解壓,將裏面的oci.dll和VC6裏面的oraocci10.dll兩個庫文件覆蓋掉D:/oracle/product/10.2.0/client_1/BIN(oracle客戶端安裝目錄BIN目錄下)的oci.dll和oraocci10.dll
5、 說明
經歷以上配置之後,基本上就可以寫一個完整的OCCI程序運行了。