oracle认证:如何读取Oracle的BLOB字段里的文件Oracle认证考试

文章作者 100test 发表时间 2009:05:02 15:25:03
来源 100Test.Com百考试题网


  使用ORADBI读取存储在BLOB字段里的多个文件,并还原到指定的路径下。
  下面是完整的代码:
  //
  // read_blobfile.c - 读BLOBFILE的例子
  //内存泄漏检测
  // 在需要检测的地方放置语句:
  // _CrtDumpMemoryLeaks().
  // 以下3句的次序不能改变
  #define _CRTDBG_MAP_ALLOC   
  #include<.stdlib.h>.
  #include<.crtdbg.h>.
  // 包含唯一的ORADBI 头文件
  #include "../oradbi.h"
  #ifdef _DEBUG
  #pragma comment(lib, "../oradbi_dll/debug/oradbid.lib")
  #else
  #pragma comment(lib, "../oradbi_dll/release/oradbi.lib")
  #endif
  #define ORADB_SERVICE   "CHEUNG"
  #define ORADB_LOGUSER   "mineusr"
  #define ORADB_PASSWORD  "minepwd"
  /*==================================================
  -- Create table
  create table TEST
  (
  BM    VARCHAR2(10),
  NAME  VARCHAR2(100),
  BIRTH DATE,
  DATA  BLOB
  )
  tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
  initial 64K
  minextents 1
  maxextents unlimited
  ).
  ====================================================*/
  //
  // 显示如何把从BLOB字段读出数据并还原为文件
  //
  void 0select_blob_data()
  {
  lresult     rc.
  ora_error_t     err.
  ora_connection  con = 0.
  ora_sqlstmt     stmt = 0.
  ora_rowset      rs = 0.
  ora_column      col.
  ora_datetime    odt.
  char       *psz.
  char        buf[30].
  char      **pp_fnames = 0.
  ushort      num_files = 0.
  ushort      ui.
  // 创建连接
  rc = ORA_connection_create( &.con, ORADB_SERVICE, ORADB_LOGUSER, ORADB_PASSWORD, OCI_THREADED|OCI_OBJECT, FALSE, &.err).
  assert(rc==ORC_SUCCESS).
  // 创建SQL, 只取一行记录: where rownum<.2
  rc = ORA_sqlstmt_create( &.stmt, con, "0select BM,NAME,BIRTH,DATA from TEST where rownum<.2", -1, 0, &.err ).
  assert(rc==ORC_SUCCESS).
  // 执行选取
  rc = ORA_sqlstmt_0select(stmt, MOD_DEFAULT, &.rs, &.err).
  assert(rc==ORC_SUCCESS).
  printf("n     BM      NAME     BIRTH      DATAn------------------------------------------------------n").
  while (ORA_rowset_next(rs))
  {
  // BM
  col = ORA_rowset_get_column_by_index(rs, 1, &.err).
  assert(ORA_column_not_null(col)).
  ORA_column_as_string(col, &.psz, &.err).
  printf("  %s  ", psz).
  // NAME
  col = ORA_rowset_get_column_by_index(rs, 2, &.err).
  assert(ORA_column_not_null(col)).
  ORA_column_as_string(col, &.psz, &.err).
  printf("  %s  ", psz).
  // BIRTH
  col = ORA_rowset_get_column_by_index(rs, 3, &.err).
  assert(ORA_column_not_null(col)).
  ORA_column_as_datetime(col, &.odt, &.err).
  ORA_datetime_to_string(odt, "YYYY-MM-DD HH:UU:SS", buf, &.err).
  printf("  %s  ", buf).
  // DATA
  col = ORA_rowset_get_column_by_index(rs, 4, &.err).
  assert(ORA_column_not_null(col)).
  // 读取LOB字段数据, 写入文件:
  rc = ORA_column_read_lobfile(col, "c:\temp", &.pp_fnames, &.num_files, &.err).
  assert(rc==ORC_SUCCESS).
  for(ui=0. ui<.num_files. ui ){
  printf("n%s", pp_fnames[ui]).
  }
  ORA_string_list_free(pp_fnames, num_files).
  printf("n").
  }
  // 释放
  ORA_rowset_free (rs).
  ORA_sqlstmt_free(stmt).
  ORA_connection_free(con).
  }
  //
  // 主程序
  //
  int main(int argc, char* argv[])
  {
  0select_blob_data().
  _CrtDumpMemoryLeaks().
  return 0.
  }
  更多优质资料尽在百考试题论坛 百考试题在线题库 oracle/认证更多详细资料

相关文章


linux安装Oracle启动图形界面问题的解决Oracle认证考试
oracle认证:如何读取Oracle的BLOB字段里的文件Oracle认证考试
oracle认证:在Oracle中恢复被DROP掉的表Oracle认证考试
Oracle关联查询时对关联字段的数据类型要求Oracle认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛