本文主要是介绍C++06:使用OTL操作Oracle数据库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、编写代码
注:以下代码来自OTL示例
/* * otl_test.cpp * */ #include <iostream> using namespace std;#include <cstdio>#define OTL_ORA10G_R2 // Compile OTL 4.0/OCI10gR2 #include <otlv4.h> // include the OTL 4.0 header file otl_connect db; // connect objectvoid insert() // insert rows into table {otl_stream o(50, // buffer size"insert into test_tab values(:f1<int>,:f2<char[31]>)",// SQL statementdb // connect object);o.set_commit(0); // turn off stream's "auto-commit"char tmp[32];for (int i = 1; i <= 123; ++i) {sprintf(tmp, "Name%d", i);o << i << tmp;}o.flush(); // flush the stream's dirty buffer: // execute the INSERT for the rows // that are still in the stream bufferdb.commit_nowait(); // commit with no wait (new feature of Oracle 10.2) }void select() {otl_stream i(50, // buffer size"select * from test_tab where f1>=:f<int> and f1<=:f*2",// SELECT statementdb // connect object);// create select streamfloat f1;char f2[31];i << 8; // assigning :f = 8// SELECT automatically executes when all input variables are// assigned. First portion of output rows is fetched to the bufferwhile (!i.eof()) { // while not end-of-datai >> f1 >> f2;cout << "f1=" << f1 << ", f2=" << f2 << endl;}i << 4; // assigning :f = 4// SELECT automatically executes when all input variables are// assigned. First portion of output rows is fetched to the bufferwhile (!i.eof()) { // while not end-of-datai >> f1 >> f2;cout << "f1=" << f1 << ", f2=" << f2 << endl;}}int main() {otl_connect::otl_initialize(); // initialize OCI environmenttry {db.rlogon("xuanyuan/xuanyuan"); // connect to Oracleotl_cursor::direct_exec(db, "drop table test_tab",otl_exception::disabled // disable OTL exceptions); // drop tableotl_cursor::direct_exec(db,"create table test_tab(f1 number, f2 varchar2(30))"); // create tableinsert(); // insert records into tableselect(); // select records from table}catch (otl_exception& p) { // intercept OTL exceptionscerr << p.msg << endl; // print out error messagecerr << p.stm_text << endl; // print out SQL that caused the errorcerr << p.var_info << endl; // print out the variable that caused the error}db.logoff(); // disconnect from Oraclereturn 0;}
二、编译代码
g++ -o"otl_test" otl_test.cpp -lclntsh -I"$ORACLE_HOME/rdbms/public"
三、运行程序 otl_test
$ ./otl_test
结果如下:
f1=8, f2=Name8 f1=9, f2=Name9 f1=10, f2=Name10 f1=11, f2=Name11 f1=12, f2=Name12 f1=13, f2=Name13 f1=14, f2=Name14 f1=15, f2=Name15 f1=16, f2=Name16 f1=4, f2=Name4 f1=5, f2=Name5 f1=6, f2=Name6 f1=7, f2=Name7 f1=8, f2=Name8
这篇关于C++06:使用OTL操作Oracle数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!