Proc*C实例一 -- 连接数据库
来源:互联网 发布:python怎么使用wget 编辑:程序博客网 时间:2024/06/04 23:36
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/tobyaries/article/details/9112135
最近由于项目的需要,了解了下Proc*C。笔者也只是刚了解了如何连接ORACLE数据库,原理以后再慢慢研究。给出代码和Makefile文件,大家使用时只需要根据实际情况修改下路径ORALCE_HOME以及用户名密码还有监听的实例名就可以了。
1. conn.pc 文件
#include <stdio.h>#include <string.h>#include <stdlib.h>#include "sqlca.h"EXEC SQL BEGIN DECLARE SECTION; char *uid = "xiaogenban/xiaogenban@xiaogenban";EXEC SQL END DECLARE SECTION;int main(){ EXEC SQL CONNECT :uid; printf("%s",sqlca.sqlerrm.sqlerrmc); if(sqlca.sqlcode == 0) printf("Success!!!\n"); else printf("Fail!!!, the sqlcode is %d\n", sqlca.sqlcode);}
xiaogenban/xiaogenban 为用户名密码
@后面的xiaogenban为数据库实例名,一般在ORACLE_HOME/network/admin/tnsnames.ora中要配置。
2. Makefile文件
kefile for the Pro*C Precompiler:# precompiling, compliling, and linking using the gcc compiler.#############################ORA_INC=-I$(ORACLE_HOME)/precomp/publicORA_LIBDIR=-L$(ORACLE_HOME)/lib -L$(ORACLE_HOME)/rdbms/lib -L$(ORACLE_HOME)/precomp/lib \ -L$(ORACLE_HOME)/sqlplus/lib -L$(ORACLE_HOME)/otrace/libORA_LIBS= -lclntsh#PROC=procPROCFLAGS=dbms=v6_char#CC=gccCFLAGS= $(ORA_INC) -I.#PROGS= conn#OBJS= conn.o#############################all: $(PROGS)%.c:%.pc$(PROC) $(PROCFLAGS) iname=$^%.o:%.c$(CC) $(CFLAGS) -c $<conn: ${OBJS}$(CC) $(CFLAGS) -o $@ $< $(ORA_LIBDIR) $(ORA_LIBS) -lmclean:rm *.o *.c *.lis $(PROGS)
#附: $^ : 所有依赖文件; $< : 依赖的第一个文件; $@ : 目标文件
这个Makefile文件是我根据内置规则重新写过的,第一版的Makefile更好懂点,如下:
kefile for the Pro*C Precompiler:# precompiling, compliling, and linking using the gcc compiler.#ORA_INC=-I$(ORACLE_HOME)/precomp/publicORA_LIBDIR=-L$(ORACLE_HOME)/lib -L$(ORACLE_HOME)/rdbms/lib -L$(ORACLE_HOME)/precomp/lib \ -L$(ORACLE_HOME)/sqlplus/lib -L$(ORACLE_HOME)/otrace/libORA_LIBS= -lclntsh##PROC=procPROCFLAGS=dbms=v6_char#CC=gccCFLAGS= $(ORA_INC) -I.##PROGS= connall: $(PROGS)conn: conn.pc $(PROC) $(PROCFLAGS) iname=conn.pc$(CC) $(CFLAGS) -c $conn.c$(CC) $(CFLAGS) -o conn conn.o $(ORA_LIBDIR) $(ORA_LIBS) -lmclean:rm *.o conn.c *.lis $(PROGS)
直接make all 应该是可以连接上数据库的 :)
[cardc@cardC b]$ make all
proc dbms=v6_char iname=conn.pc
Pro*C/C++: Release 10.2.0.1.0 - Production on Mon Jun 17 14:54:59 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
System default option values taken from: /home/oracle/oracle/product/10.2.0/client_1/precomp/admin/pcscfg.cfg
PCC-W-02110, DBMS=V6_CHAR is deprecated. Use CHAR_MAP=VARCHAR2, DBMS=V7 instead
gcc -I/home/oracle/oracle/product/10.2.0/client_1/precomp/public -I. -c conn.c
gcc -I/home/oracle/oracle/product/10.2.0/client_1/precomp/public -I. -o conn conn.o -L/home/oracle/oracle/product/10.2.0/client_1/lib -L/home/oracle/oracle/product/10.2.0/client_1/rdbms/lib -L/home/oracle/oracle/product/10.2.0/client_1/precomp/lib -L/home/oracle/oracle/product/10.2.0/client_1/sqlplus/lib -L/home/oracle/oracle/product/10.2.0/client_1/otrace/lib -lclntsh -lm
rm conn.c
[cardc@cardC b]$ ./conn
Success!!!
- Proc*C实例一 -- 连接数据库
- Proc*C实例二 -- 读取数据库
- Proc*C实例三 -- 数据库代码逻辑代码分离
- 分析 Mtk_mira.c 源代码(引出proc文件系统创建实例一)
- C语言连接MySQL数据库实例
- C语言连接MySQL数据库实例
- proc/c++(一) 快速上手
- Oracle之使用proc连接数据库
- proc*c 程序设计(一) 数据库连接pc
- (Mysql一)Linux C语言连接数据库Mysql数据库
- ProC实例-Linux下的Oracle Pro*C应用程序实例
- 用C api 连接mysql数据库的 开发实例
- 用C api 连接mysql数据库的 开发实例
- linux下使用c语言连接数据库实例
- Java连接数据库实例
- Java连接数据库实例
- Jdbc 连接数据库 实例
- Java连接数据库实例
- 使用Understand获取某个函数(方法)的静态度量指标
- error: device offline- waiting for device
- Java 得到文件行数
- 【设计模式】Singleton模式C++实现
- FC HBA卡信息的方法
- Proc*C实例一 -- 连接数据库
- 鼠标冒泡
- js 日历
- Android:单元测试Junit配置
- [三维图像处理]Chapter 3 Local processing of 3D images
- 算法复杂度分析之主方法 Master Method
- createAudioHardware的流程
- 【jiasuba】电脑启动慢反应慢是怎么回事
- StringUtils中 isNotEmpty 和isNotBlank的区别