Proc*C实例一 -- 连接数据库
2013-06-17 14:54
190 查看
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。/article/8110595.html |
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/public ORA_LIBDIR=-L$(ORACLE_HOME)/lib -L$(ORACLE_HOME)/rdbms/lib -L$(ORACLE_HOME)/precomp/lib \ -L$(ORACLE_HOME)/sqlplus/lib -L$(ORACLE_HOME)/otrace/lib ORA_LIBS= -lclntsh # PROC=proc PROCFLAGS=dbms=v6_char # CC=gcc CFLAGS= $(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) -lm clean: 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/public ORA_LIBDIR=-L$(ORACLE_HOME)/lib -L$(ORACLE_HOME)/rdbms/lib -L$(ORACLE_HOME)/precomp/lib \ -L$(ORACLE_HOME)/sqlplus/lib -L$(ORACLE_HOME)/otrace/lib ORA_LIBS= -lclntsh # # PROC=proc PROCFLAGS=dbms=v6_char # CC=gcc CFLAGS= $(ORA_INC) -I. # # PROGS= conn all: $(PROGS) conn: conn.pc $(PROC) $(PROCFLAGS) iname=conn.pc $(CC) $(CFLAGS) -c $conn.c $(CC) $(CFLAGS) -o conn conn.o $(ORA_LIBDIR) $(ORA_LIBS) -lm clean: 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!!!
相关文章推荐
- .NET连接数据库实例
- ASP.NET 连接数据库 增删改查简单实例
- Java连接数据库实例
- 安装完Oracle后 使用dbca创建数据库 弹出ORA-01092: ORACLE 实例终止,强制断开连接
- C#连接数据库sqlserver2005,并执行sql语句实例:
- Oracle SQL Developer连接数据库实例
- 单例模式连接数据库实例
- Java连接数据库实例
- 如何指定 默认实例名 的数据库连接??
- Java开发之Spring连接数据库方法实例分析
- python中常用的各种数据库操作模块和连接实例
- Java连接各种数据库的实例
- Java连接各种数据库的实例
- Java连接各种数据库的实例
- Java连接数据库(JDBC)之三:java访问数据库MySQL实例
- Spring连接数据库整合-实例
- SQL2008登录本地数据库时:请验证实例名称是否正确并且 SQL Server已配置为允许远程连接 error:40-无法打开
- Enterprise Manager 无法连接到数据库实例
- orcale连接数据库的实例
- PowerDesigner连接数据库的实例详解