Linux環境下proc的配置c/c++操作數據庫簡單示例


  在虛擬機上裝了oracle11g數據庫,原本想利用c/c++學習操作數據庫.結果感覺攤上了一個大坑.從安裝好oracle數據庫到配置好proc的編譯選項整整花了二天.但讓我意識到自己自己幾點薄弱:1.對Linux的命令和腳本的使用不夠熟練.2.對Linux的個文件夾的作用不夠了解;(打算下次補充一篇這樣的總結博客.)3.英文還是很差勁的我.好入真題.

  由於我引進配置好了,不想在折騰了,所以就沒有在重現錯誤,只是說一下思路和配置文件的內容.

  1.oracle用戶根目錄下的.bash_profile的作用是:~/.bash_profile:每個用戶都可使用該文件輸入專用於自己使用的shell信息,當用戶登錄時,文件僅僅執行一次!默認情況下,他設置一些環境變量,執行用戶的.bashrc.

  所以先配置.bash_profile文件由於安裝目錄不同要相應改動.

  

 .bash_profile
  
   # Get the aliases and functions
   if [ -f ~/.bashrc ]; then
           . ~/.bashrc
  fi
   
  # User specific environment and startup programs
  umask 022
  ORACLE_BASE=/u01/
  ORACLE_HOME=$ORACLE_BASE/oracle/
  OACLE_SID=orcl
  PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
  LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
  #LANG=C
  export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH LANG
~

  2.還有就是配置precomp/admin文件夾下的pcscfg.cfg主要是加上proc的庫文件及oracle的home目錄

 sys_include=/u01/precomp/public

sys_include=/u01/oracle
sys_include=/usr/include
sys_include=/u01/oracle/lib/
code=cpp
cpp_suffix=cc
parse=none

 ORACLE_BASE=/u01/
 ORACLE_HOME=$ORACLE_BASE/oracle/
 export ORACLE_BASE ORACLE_HOME

 

 

  3.oracle數據的啟動和關閉

  sqlplus /scott/password
  startup                      --啟動數據庫
  shutdown immediate   --關閉數據庫
 
  4.啟動監聽
  lsnrctl

  5.proc編譯.pc文件
  proc dm01_hello.pc
  Pro*C/C++: Release 11.2.0.1.0 - Production on Tue Oct 11 11:20:50 2016
  Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
  System default option values taken from: /u01/oracle/precomp/admin/pcscfg.cfg

  6.編譯生成的.cc文件  記得加上相應的頭文件路徑之后工程化編寫可寫成makefile的形式

  g++ dm01_hello.cc -o  dm01_hello -I /u01/oracle/precomp/public/ -L /u01/oracle/lib/ -lclntsh

  相應的dm01_hello.pc文件

#include <stdio.h>
#include <string.h>
#include <string.h>
#include "sqlca.h"

EXEC SQL BEGIN DECLARE SECTION;
char *serverid = "scott/000110@orcl";
EXEC SQL END DECLARE SECTION; 

int main()
{
        int ret  = 0;
        printf("hello....\n");
        printf("serverid:%s \n", serverid);
        EXEC SQL connect :serverid; 
        if (sqlca.sqlcode != 0)
        {
                ret = sqlca.sqlcode;
                printf("EXEC SQL connect:err, %d\n", ret);
                return ret;
        }
        printf("connect ok\n");
        return ret;
}

  7.結果: 

  [oracle@disdader day3]$ ./dm01_hello
  hello....
  serverid:scott/000110@orcl
  connect ok

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM