系统环境:
OS: Linux Windows 2.6.27-12-generic #1 SMP Thu Feb 5 09:26:35 UTC 2009
i686 GNU/Linux
Oracle:Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 -
Production
GCC:gcc (Ubuntu 4.3.2-1ubuntu12) 4.3.2
用户环境:
export JAVA_HOME=/usr/share/java
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/ora11
export ORACLE_OWNER=oracle
export ORACLE_SID=tmp
export ORACLE_TERM=xterm
export PATH=$JAVA_HOME/bin:$ORACLE_HOME/bin:$PATH
步骤:
1.建立数据库表usr
2.建立C++源文件,occi.cpp
#include
<iostream>
#include <algorithm>
#include <occi.h>
using namespace std;
using namespace oracle::occi;
class OcciDemo {
private:
Environment *env;
Connection *conn;
public:
OcciDemo(string user, string passwd, string
dbname) {
env =
Environment::createEnvironment(Environment::OBJECT);
conn =
env->createConnection(user, passwd, dbname);
}
~OcciDemo() {
env->terminateConnection(conn);
Environment::terminateEnvironment(env);
}
void displayTable(string
tablename) {
cout << "Displaying the table " <<
tablename << endl;
Statement *stmt =
conn->createStatement("select
id from usr");
ResultSet *rs =
stmt->executeQuery();
try {
while (rs->next()) {
cout
<< rs->getInt(1) <<
endl;
}
} catch (SQLException
se) {
cout
<< "Error number: " <<
se.getErrorCode() << endl;
cout
<< se.getMessage() << endl;
}
}
};
int main(void)
{
OcciDemo *occi = new OcciDemo("hanchen", "123456", "orcl");
occi->displayTable("usr");
return 0;
}
3.建立makefile
CC=g++
ORACLE_HOME=/opt/oracle/ora11
INCLUDES=$(ORACLE_HOME)/rdbms/public
LIBS=$(ORACLE_HOME)/lib
CXXFLAGS=-O2 -Wall -I$(INCLUDES)
TARGET=occi
all:$(TARGET)
occi:occi.o
$(CC) -o
$@ $^ -L$(LIBS) -locci
-ldl -lclntsh
hash:hash.o
$(CC) -o
$@ $^ -L$(LIBS)
clean:
rm -rf *.o
rm -rf $(TARGET)
4. 如果编译错误,请检查-I参数,如果链接错误,请检查参数-L与-ldl -lclntsh,如果运行错误,请继续5
5.编辑/etc/ld.so.conf文件
加入/opt/oracle/ora11/lib,该目录下有libocci.so文件
然后运行ldconfig -v使库链接生效
6.运行./occi即可显示结果
如有问题,或错误,请联系我,请高手不吝赐教,谢谢!
没有评论:
发表评论