日期:2014-05-17  浏览次数:21014 次

OCCI编程时,初始化Date类出错
使用的是Oracle 9i & VC6

下面Date类初始化,在运行时出错,是什么问题

#include <iostream>
#include <occi.h>
#include <occiCommon.h>
#include <occiData.h>
#include <occiObjects.h>
#include <occiControl.h>

using namespace oracle::occi;
using namespace std;

int main () 
{
Environment *env;
Connection *conn;
Statement *stmt;

string username = "idc";
string password = "idc";
string connstring = "oridc";
string sql;
string id = "13600000003";

env = Environment::createEnvironment(); //创建一个环境变量
conn = env->createConnection(username,password,connstring); //创建一个数据库连接对象
stmt = conn->createStatement(); //创建一个Statement对象

// to_date(:10, 'DD-MM-YYYY HH24:MI:SS')
sql = " insert into gasinfo values (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11)";  //拼接一个SQL语句
// sql = " insert into gasinfo values ('13600000002', '20', '20','20','20','20','20','20','20', to_date('21-08-2012 12:00:00', 'DD-MM-YYYY HH24:MI:SS'), 1)";  //拼接一个SQL语句
stmt->setSQL(sql); //设置SQL语句到Statement对象中
stmt->setString(1, id);
stmt->setFloat(2, 20);
stmt->setFloat(3, 20);
stmt->setFloat(4, 20);
stmt->setFloat(5, 20);
stmt->setFloat(6, 20);
stmt->setFloat(7, 20);
stmt->setFloat(8, 20);
stmt->setFloat(9, 20);

// Date dt;
// dt.setDate(2012, 8, 22, 12, 0, 5);
stmt->setDate(10, oracle::occi::Date(Environment::createEnvironment(), 2012, 8, 22, 12, 0, 5));
// stmt->setString(10, "21-08-2012 12:00:00");
stmt->setFloat(11, 20);
try {
stmt->executeUpdate();//执行SQL语句
cout << "SELECT ―― SUCCESS" << endl;
} catch (SQLException ex) {
cout << " Error Number : "<< ex.getErrorCode() << endl; //取出异常代码
cout << ex.getMessage() << endl; //取出异常信息
}

conn->terminateStatement(stmt); //终止Statement对象
env->terminateConnection(conn); //断开数据库连接
Environment::terminateEnvironment(env); //终止环境变量

return 0;
}

------最佳解决方案--------------------
看你很长时间了,搞定了么 
------其他解决方案--------------------
引用:
看你很长时间了,搞定了么


换成最新版本的client就好了