第一个pro*C demo
该程序很简单,就是用C从ORACLE,把当前日期显示出来就OK,作为一个简单的DEMO
(一)写PRO*C
/*===========================================================================
* pro*c编译方法:
* 预编译 proc test.pc
* 编译 gcc -o test test.c $ORACLE_HOME/lib/libclntsh.so
* 作者 foxliu
* 时间 2009-10
*============================================================================*/
#include <stdio.h>
#include <sqlca.h>
int main(int argc,char **argv)
{
/*声明SQL变量*/
EXEC SQL BEGIN DECLARE SECTION;
/*VARCHAR预编译后为struct { unsigned short len; unsigned char arr[20];}*/
VARCHAR user[20],pass[20],tnsname[20];
char crruentDate[15];
EXEC SQL END DECLARE SECTION;
/*声明C变量*/
int i=0;
strcpy(user.arr,"dbrevass");
user.len=strlen((char *)user.arr);
strcpy(pass.arr,"dbrevass");
pass.len=strlen((char *)pass.arr);
strcpy(tnsname.arr,"wapp");
tnsname.len=strlen((char *)tnsname.arr);
/*Connect the DB*/
EXEC SQL CONNECT :user IDENTIFIED BY :pass USING :tnsname;
/*printf("%d",sqlca.sqlcode);*/
/*游标声明*/
EXEC SQL declare emp_cursor cursor for
select sysdate from dual;
&n
相关文档:
以下是我的测试oci的例子!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "oci.h"
static OCIServer *srvhp;
static OCISession *p_session;
static OCIEnv &nb ......
C/C++是不检查数组下标是否越界的。
不检查下标是否越界可以有效提高程序运行的效率,因为如果你检查,那么编译器必须在生成的目标代码中加入额外的代码用于程序运行时检测下标是否越界,这就会导致程序的运行速度下降,所以为了程序的运行效率,C/C++才不检查下标是否越界。
  ......
C中的可变参数研究
一. 何谓可变参数
int printf(const char* format, ...);
这是使用过C语言的人所再熟悉不过的printf函数原型,它的参数中就有固定参数format ......
预处理器(Preprocessor)
1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
我在这想看到几件事情:
1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)
2). 懂得预处理器将为你计算常数表达式的值,因此,直接 ......
很奇怪,以前一直以为C++是兼容C的,但是,今天用lex&yacc生成的C代码可用通过GCC的编译,
但是怎么都通不过G++的编译,而其错误很多,有可能是lex&yacc生成的C代码太老了,,,
我是这样解决的
把lex&yacc生成的代码 用 GCC -c 编译成 lex.o 的目标文件。然后 g++ main.cpp lex.o ,就OK了
记得: 在 main. ......