发表于:2006.12.21 12:32
分类: 一般分类
出处:http://swamikang.itpub.net/post/18239/243175
---------------------------------------------------------------
前端时间由于新装一台linux服务器,安装了ORACLE9.0.2,有了这个环境就可以学习ORACLE了,从ORACLE网站上得知OCCI编程就自己试了试,可我安装ORACLE官方文档写的程序就怎么也不能编译连接通过,很是郁闷,后来知道ORACLE902必须需要g++296才能编译,幸运的是自己linux里有g++296。全部测试通过。呵呵,为了互相学习,把我的测试小程序简单整理。因为我从google, 百度上发现occi的文章不多,还不完整。以供大家学习。
//demo1.h
#ifndef DEMO1H
#define DEMO1H
#include
#include
using namespace oracle::occi;
using namespace std;
class OcciDemo1
{
public:
OcciDemo1();
~OcciDemo1();
void display();
void insertRow(int id,string sName);
private:
Environment *env;
Connection *conn;
Statement *stmt;
};
#endif
//demo1.cpp
#include
#include "demo1.h"
OcciDemo1::OcciDemo1()
{
env = Environment::createEnvironment();
conn = env->createConnection("system","system","");
}
OcciDemo1::~OcciDemo1()
{
env->terminateConnection(conn);
Environment::terminateEnvironment(env);
}
void OcciDemo1::display()
{
stmt = conn->createStatement("select * from t");
ResultSet *rs = stmt->executeQuery();
cout.setf(ios::right, ios::adjustfield);
cout<
{
int i = rs->getInt(1);
string sName = rs->getString(2);
cout.setf(ios::right, ios::adjustfield);
cout << setw(10)< cout <
stmt->setInt(1,id);
stmt->setString(2,sName);
stmt->executeUpdate();
conn->commit();
conn->terminateStatement(stmt);
}
catch (exception &excp)
{
cout << excp.what() << endl;
}
}
//demo.cpp
#include "demo1.h"
int main()
{
OcciDemo1 *occiDemo1 = new OcciDemo1();
occiDemo1->insertRow(999,"The last String");
occiDemo1->display();
}
//Makefile
ORACLE_INCLUDES=-I$(ORACLE_HOME)/rdbms/demo -I$(ORACLE_HOME)/rdbms/public -I$(ORACLE_HOME)/plsql/public -I$(ORACLE_HOME)/network/public -I$(ORACLE_HOME)/precomp/public
ORACLE_LIBS=-L$(ORACLE_HOME)/lib -L$(ORACLE_HOME)/rdbms/lib
CC=g++296
CC_FLAG=-Wno-deprecated -fPIC -march=i486
INC=$(ORACLE_INCLUDES)
LIB=$(ORACLE_LIBS) -lclntsh -locci
PRG=demo
SRC=demo1.cpp demo1.h
OBJ=demo1.o
$(PRG):$(OBJ)
@echo "Link $(OBJ) to $(PRG)......"
@$(CC) $(CC_FLAG) $(INC) $(LIB) -o $@ demo.cpp $<
$(OBJ):$(SRC)
@echo "Compile $(OBJ)......"
@$(CC) $(CC_FLAG) $(INC) $(ORACLE_LIBS) -c $<
.PRONY:clean
clean:
@echo "Removing linked and compiled files......"
@rm -f $(OBJ) $(PRG)
//运行结果
[swami@shtd demo]$ ./demo
ORA-01438: value larger than specified precision allows for this column
ID Name
---------- ----------------------------------
1 Test string index = 1
2 Test string index = 2
3 Test string index = 3
4 Test string index = 4
5 Test string index = 5
6 Test string index = 6
7 Test string index = 7
8 Test string index = 8
9 Test string index = 9
10 Test string index = 10
99 The last String
99 The last String
99 The last String
99 The last String
99 The last String
[swami@shtd demo]$






