首页 > 代码库 > Linux环境下proc的配置c/c++操作数据库简单示例

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/oraclesys_include=/usr/includesys_include=/u01/oracle/lib/code=cppcpp_suffix=ccparse=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

  

 

Linux环境下proc的配置c/c++操作数据库简单示例