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);