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