C++通过occi执行select语句、存储过程、函数,取cursor值示例
来源:互联网 发布:ins注册提示网络错误 编辑:程序博客网 时间:2024/05/19 06:50
#include <stdio.h>
#include <iostream>
#include <String>
using namespace std;
#include <occi.h>
#include <occiControl.h>
using namespace oracle::occi;
/*
void selectDemo()
{
Environment *pEnv = NULL; //定义执行环境对象
Connection *pConn = NULL; //定义链接对象
Statement *pStmt = NULL; //定义执行语句对象
ResultSet *pRs = NULL; //定义结果集对象
const string szUserName = "demo"; //设置用户名
const string szUserPwd = "demo"; //设置密码
const string szConnection = "icss"; //设置要链接的数据库,"icss"是数据库名
try
{
pEnv = Environment::createEnvironment(); //创建了一个执行环境
pConn = pEnv->createConnection(szUserName, szUserPwd, szConnection);
//创建了一个链接,有三个参数。
if ( NULL == pConn) //如果链接创建失败,执行以下代码
{
cout << "Connection Failure" << endl;
return;
}
pStmt = pConn->createStatement(); //通过connection对象创建一个statement对象
string strSql = "select * from test1";
pStmt -> setSQL(strSql); //设置语句执行对象的属性
pRs = pStmt->executeQuery(); //执行调用,返回结果集对象
while ( pRs -> next()) //对结果集遍历,输出结果集里的数据
{
cout << pRs->getInt(1) << " " << pRs->getString(2) << endl;
} //getInt()和getString()方法的使用取决于数据集里数据的类型。1和2指第一、第二个字段
}
catch ( SQLException ex)
{
cout << ex.getMessage() << endl;
}
pStmt -> closeResultSet(pRs); //statement对象调用方法关闭数据集
pConn -> terminateStatement(pStmt); //connection对象调用terminateStatement()方法关闭statement对象
pEnv -> terminateConnection(pConn); //environment对象调用方法关闭connection对象
Environment::terminateEnvironment(pEnv); //关闭环境对象。
//return 0;
}
void procedureDemo()
{
Environment *pEv = NULL;
Connection *pConn = NULL;
Statement *pStmt = NULL;
const string username = "demo";
const string password = "demo";
const string database = "icss";
try
{
pEv = Environment::createEnvironment();
pConn = pEv->createConnection(username, password, database);
if ( NULL == pConn)
{
cout << "Connection Failure!" << endl;
return;
}
pStmt = pConn->createStatement("BEGIN sp_selectspecial(:1, :2, :3); end;");
//执行存储过程与执行SQL语句的不同:执行sql语句时,createstatement的参数是select参数。而执行存储过程时
//createstatement的参数是“BEGIN SPNAME(PARAM1, PARAM2 …); end;”。
pStmt -> setInt(1, 43);
pStmt -> registerOutParam(2, OCCISTRING, 30, "");
pStmt -> registerOutParam(3, OCCISTRING, 30, "");
//pStmt -> registerOutParam(4, OCCINUMBER, 10, "");
//pStmt -> registerOutParam(5, );
int updateCount = pStmt->execute();
cout << pStmt->getString(2) << " " << pStmt->getString(3) << endl;
pConn->terminateStatement(pStmt);
pEv->terminateConnection(pConn);
Environment::terminateEnvironment(pEv);
}
catch ( SQLException ex)
{
cout << ex.getMessage() << endl;
}
}
void functionDemo()
{
Environment *pEvn = NULL;
Connection *pConn = NULL;
Statement *pStmt = NULL;
const string username = "demo";
const string password = "demo";
const string database = "icss";
try
{
pEvn = Environment::createEnvironment();
pConn = pEvn->createConnection(username, password, database);
if ( NULL == pConn)
{
cout << "Connection Failure!" << endl;
return;
}
pStmt = pConn->createStatement(" BEGIN :1:=fun_GetSalary(:2); END; ");
pStmt->registerOutParam(1, OCCIINT,30,"");
//try
//{
pStmt->setInt(2,2);
//}
//catch ( SQLException ex)
//{
// cout << ex.getMessage() << endl;
//}
pStmt->executeUpdate();
cout << pStmt->getInt(1) << endl;
}
catch ( SQLException ex)
{
cout << ex.getMessage() << endl;
}
}
*/
void cursorDemo()
{
Environment *pEv = NULL;
Connection *pConn = NULL;
Statement *pStmt = NULL;
ResultSet *pRs = NULL;
const string username = "demo";
const string password = "demo";
const string database = "icss";
try
{
pEv = Environment::createEnvironment();
pConn = pEv->createConnection(username, password, database);
if ( NULL == pConn)
{
cout << "Connection Failure!" << endl;
return;
}
pStmt = pConn->createStatement("BEGIN sp_GetSpecialByID(:1, :2, :3, :4, :5); end;");
//执行存储过程与执行SQL语句的不同:执行sql语句时,createstatement的参数是select参数。而执行存储过程时
//createstatement的参数是“BEGIN SPNAME(PARAM1, PARAM2 …); end;”。
pStmt -> setInt(1, 12);
pStmt -> setString(2, "");
pStmt -> setString(3, "");
pStmt -> setInt(4, -1);
pStmt -> registerOutParam(5, OCCICURSOR);
int updateCount = pStmt->execute();
pRs = pStmt->getCursor(5);
pRs->next();
cout << pRs->getString(2) << endl;
pStmt->closeResultSet(pRs);
pConn->terminateStatement(pStmt);
pEv->terminateConnection(pConn);
Environment::terminateEnvironment(pEv);
}
catch ( SQLException ex)
{
cout << ex.getMessage() << endl;
}
}
int main(int argc, char* argv[])
{
//procedureDemo();
//selectDemo();
//functionDemo();
cursorDemo();
return 0;
}
- C++通过occi执行select语句、存储过程、函数,取cursor值示例
- select 语句执行过程
- MySQL存储过程游标(cursor)示例
- occi 存储过程
- oracle执行存储过程返回游标cursor
- 通过存储过程执行通过DBLINK的查询语句失败-单个语句成功--ORA-00604
- 存储过程示例+SQL语句
- oracle执行存储过程语句
- ADO 执行存储过程,取字符串类型的返回值
- select sql 语句执行过程 顺序
- select sql 语句执行过程 顺序
- 08PL_SQL过程之执行select语句
- Oracle中select语句执行过程
- Oracle中select语句执行过程
- oracle存储过程中的select语句
- 存储过程CURSOR使用
- 存储过程-cursor
- oracle存储过程cursor
- httpSession的正确理解
- 3S CoDeSys运行时工具包空指针引用
- PAT: 1054. The Dominant Color (20)
- 京东招股书披露:微信价值10亿美元
- 归并排序
- C++通过occi执行select语句、存储过程、函数,取cursor值示例
- /dev/tty
- Android的四大组件之二--BroadcastReceiver(相关内容,开机启动Service)
- 仿jdk的ArrayList实现
- 黑马程序-常见异常对象
- 苹果产品判断
- Intent中的四个重要属性——Action、Data、Category、Extras
- 全志A20[android教程]-红外遥控器调试
- samba的安装(tar.gz方式)