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

  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