oracle连接器

 

#ifndef __ORACLE_CONNECTOR_H__
#define __ORACLE_CONNECTOR_H__

#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <assert.h>
#include <occi.h>
#include <occiCommon.h>
#include <occiData.h>
#include <occiObjects.h>
#include <occiAQ.h>
#include <occiControl.h>

#include "cxxlogable.h"

using namespace oracle::occi;
using namespace std;

class Oracle_Connector : public CxxLogable
{
public:
    Oracle_Connector();
    Oracle_Connector(const char* dbName,const char* dbUser,const char* dbPass);
    ~Oracle_Connector();

public:
    bool connect(const char* dbName,const char* dbUser,const char* dbPass);
    bool is_valid();
    bool exec_update(const char* sql);
    ResultSet* exec_query(const char* sql);
    void clear_result_set(ResultSet* set);
    void set_date(unsigned int paramIndex, time_t timeVal);
   
private:
    bool bConnected;
    Environment* m_env;
    Connection*  m_conn;
    Statement*   m_stmt;
};

Oracle_Connector::Oracle_Connector()
{
    bConnected = false;
    m_env = NULL;
    m_conn = NULL;
    m_stmt = NULL;
}

bool Oracle_Connector::connect(const char* dbName,const char* dbUser,const char* dbPass)
{
    if(m_env ==0)
        m_env = Environment::createEnvironment();
    if(m_conn==0)
    {
        try
        {
            m_conn=m_env->createConnection(dbUser, dbPass, dbName);
            bConnected = true;
        }
        catch (SQLException& ex)
        {
            m_conn = 0;
            cout << "connect to database failed: " << ex.getMessage() << endl;
            bConnected = false;
        }
    }

    return bConnected;
}

Oracle_Connector::Oracle_Connector(const char* dbName, const char* dbUser, const char* dbPass)
{
    bConnected = false;
    m_env = NULL;
    m_conn = NULL;
    m_stmt = NULL;

    this->connect(dbUser, dbPass, dbName);
}

Oracle_Connector::~Oracle_Connector()
{
    if(m_stmt != NULL && m_conn != NULL)
        m_conn->terminateStatement(m_stmt);

    if(m_conn != NULL && m_env != NULL)
        m_env->terminateConnection(m_conn);
}

bool Oracle_Connector::is_valid()
{
    return bConnected;
}

// 执行数据库更新操作,包括insert、update、delete操作
bool Oracle_Connector::exec_update(const char* sql)
{
    bool update_OK = true;
    if(sql == NULL || m_conn == NULL || m_env == NULL)
    {
        return false;
    }

    try
    {
        m_stmt = m_conn->createStatement(sql);
    }
    catch (SQLException& ex)
    {
        m_stmt = NULL;
        cout << "ExecuteUpdate failed: " << ex.getMessage() << endl;
        return false;
    }

    update_OK = m_stmt->executeUpdate();
   
    return update_OK;
}

//执行数据库查询操作,即select操作
ResultSet* Oracle_Connector::exec_query(const char* sql)
{
    if(sql == NULL || m_conn == NULL || m_env == NULL)
    {
        return NULL;
    }

    try
    {
        m_stmt = m_conn->createStatement(sql);
    }
    catch (SQLException& ex)
    {
        m_stmt = NULL;
        cout << "ExecuteQuery failed: " << ex.getMessage() << endl;
        return NULL;
    }
   
    return m_stmt->executeQuery();
}

void Oracle_Connector::clear_result_set(ResultSet* set)
{
    if(m_stmt == NULL || set == NULL)
    {
        return ;
    }
    else
        m_stmt->closeResultSet(set);
}

void Oracle_Connector::set_date(unsigned int paramIndex, time_t timeVal)
{
    // cout<<timeVal<<endl;
    m_stmt = m_conn->createStatement();
    assert(m_stmt != NULL);
    tm* timeStruct = localtime(&timeVal);
    Date date(m_env,
        timeStruct->tm_year + 1900,
        timeStruct->tm_mon + 1,
        timeStruct->tm_mday,
        timeStruct->tm_hour,
        timeStruct->tm_min,
        (timeStruct->tm_sec == 60) ? 0 : timeStruct->tm_sec);
    m_stmt->setDate(paramIndex, date);
}

#endif // __ORACLE_CONNECTOR_H__

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值