Number编程示例¶
number数据类型参数绑定
/*创建环境句柄、到数据库的连接 和 statement*/
Environment *env = Environment::createEnvironment();
Connection *conn = env->createConnection(user,pwd,link);
Statement *stmt = conn->createStatement();
string csql = "create table acci_test(a int,b number(8,4))";
string dsql = "drop table acci_test";
string test_sql ="select * from acci_test where a = :1";
ResultSet *rs;
stmt->execute(dsql);
stmt->execute(csql);
/*insert语句通过id变量绑定参数*/
stmt->setSQL("insert into acci_test values(1,:1)");
Number num;
stmt->setNumber(1,4321.12);
stmt->execute();
/*select语句通过id变量绑定参数*/
stmt->setSQL(test_sql);
stmt->setInt(1, 1);
rs = stmt->executeQuery();
while(rs->next())
{
num = rs->getNumber(2);
/*(long)num 值为4321,(float)num值为4321.12f*/
}
stmt->closeResultSet(rs);
stmt->execute(dsql);
/*释放statement、数据库连接 和 环境句柄*/
conn->terminateStatement(stmt);
env->terminateConnection(conn);
Environment::terminateEnvironment(env);
number数据类型参数批量绑定
/*创建环境句柄、到数据库的连接 和 statement*/
Environment *env = Environment::createEnvironment();
Connection *conn = env->createConnection(user,pwd,link);
Statement *stmt = conn->createStatement();
string csql = "create table acci_test(id int, num number(8,4))";
string dsql = "drop table acci_test";
string test_sql = "select * from acci_test order by id";
string isql = "insert into acci_test values(:1, :2)";
int id[ArraySize];
Number num[ArraySize];
ub2 id_len[ArraySize];
ub2 num_len[ArraySize];
ResultSet *rs;
int i = 0;
stmt->setSQL(dsql);
stmt->execute();
/*insert语句通过变量批量绑定参数*/
stmt->execute(csql);
/*insert批量操作*/
for (i = 0; i < ArraySize; i++)
{
id[i] = i + 1;
num[i] = 101 + i;
id_len[i] = sizeof(int);
num_len[i] = sizeof(Number);
}
stmt->setSQL(isql);
stmt->setDataBuffer(1, (dvoid*)id, OCCIINT, sizeof(id[0]), id_len);
stmt->setDataBuffer(2, (dvoid*)num, OCCI_SQLT_VNU, sizeof(Number), num_len);
stmt->executeArrayUpdate(ArraySize);
conn->commit();
/*select*/
stmt->setSQL(test_sql);
rs = stmt->executeQuery();
i = 0;
while (rs->next())
{
Number nn;
nn = rs->getNumber(2);
/*此处num[i]值和nn相等*/
i++;
}
stmt->closeResultSet(rs);
stmt->execute(dsql);
/*释放statement、数据库连接 和 环境句柄*/
conn->terminateStatement(stmt);
env->terminateConnection(conn);
Environment::terminateEnvironment(env);