//
// 显示如何把多个文件插入到BLOB字段
//
void insert_blob_data()
{
lresult rc;
ora_error_t err; // 不需要释放
ora_param p[4];
ora_datetime dt;
ora_connection con = 0;
ora_sqlstmt stmt = 0;
// 用于绑定LOB变量的结构
ORADBI_InBind inbind;
// 利用ORADBI自带的写blobfile功能
// ORA_inbind_lobfile_init 必须在ORA_sqlstmt_bind_lob之前调用
ORA_inbind_lobfile_init(&inbind, 0, arrLobFiles, sizeof(arrLobFiles)/sizeof(arrLobFiles[0]), &err);
// 创建连接
rc = ORA_connection_create( &con, ORADB_SERVICE, ORADB_LOGUSER, ORADB_PASSWORD, OCI_THREADED|OCI_OBJECT, FALSE, &err);
assert(rc==_SUCCESS);
// 创建SQL
rc = ORA_sqlstmt_create( &stmt, con, "insert into TEST (BM,NAME,BIRTH,DATA) values (:bm,:name,:birth,:blob)", -1, 0, &err);
assert(rc==_SUCCESS);
// 绑定变量
rc = ORA_sqlstmt_bind (stmt, ":bm", ODT_TEXT, 0, &p[0], &err);
assert(rc==_SUCCESS);
rc = ORA_sqlstmt_bind (stmt, ":name", ODT_TEXT, 100, &p[1], &err);
assert(rc==_SUCCESS);
rc = ORA_sqlstmt_bind (stmt, ":birth", ODT_DATE, 0, &p[2], &err);
assert(rc==_SUCCESS);
// 绑定BLOB变量
rc = ORA_sqlstmt_bind_lob (stmt, ":blob", 0, &inbind, 0, &p[3], &err);
assert(rc==_SUCCESS);
// 设置变量的值
rc = ORA_param_set_string(p[0], "2008", -1, &err);
rc = ORA_param_set_string(p[1], "BeiJing", -1, &err);
ORA_datetime_create(&dt, 1);
rc = ORA_param_set_datetime(p[2], dt, &err);
ORA_datetime_free(dt);
// 执行插入
rc = ORA_sqlstmt_execute(stmt, MOD_DEFAULT, 0, &err);
assert(rc==_SUCCESS);
rc = ORA_connection_commit(con, &err);
assert(rc==_SUCCESS);
// 释放结束
ORA_inbind_lobfile_free(&inbind);
ORA_sqlstmt_free(stmt);
ORA_connection_free(con);
}
//
// 主程序
//
int main(int argc, char* argv[])
{
insert_blob_data();
_CrtDumpMemoryLeaks();
return 0;
}
上一页 [1] [2] [3]
责任编辑:小草