在oracle的blob字段里保存多个文件
来源:优易学  2011-4-30 9:55:37   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  //
  // 显示如何把多个文件插入到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] 

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训