zoukankan      html  css  js  c++  java
  • 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....
    ");
            printf("serverid:%s 
    ", serverid);
            EXEC SQL connect :serverid; 
            if (sqlca.sqlcode != 0)
            {
                    ret = sqlca.sqlcode;
                    printf("EXEC SQL connect:err, %d
    ", ret);
                    return ret;
            }
            printf("connect ok
    ");
            return ret;
    }

      7.结果: 

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

      

  • 相关阅读:
    [USACO4.2]草地排水Drainage Ditches
    bzoj3236:[AHOI2013]作业
    小A买彩票-(组合数)
    CSS样式整理大全
    P1880 [NOI1995]石子合并-(环形区间dp)
    P1147连续自然数和-(尺取法)
    POJ2456Aggressive cows-(二分判定)
    NYOJ737石子合并(二)-(区间dp)
    牛客网-乌龟跑步-(dfs)
    int和string之间的转换
  • 原文地址:https://www.cnblogs.com/wannable/p/5951373.html
Copyright © 2011-2022 走看看