oracle读取blob字段的方法,如何读取Oracle的BLOB字段里的文件?

这段代码展示了如何使用ORADBI库从Oracle数据库中读取存储在BLOB字段的数据,并将这些数据还原为文件。通过创建连接、执行SQL语句获取BLOB字段,然后将其内容写入指定路径下的文件。适用于处理包含二进制大对象的数据库操作。

使用ORADBI读取存储在BLOB字段里的多个文件,并还原到指定的路径下。  下面是完整的代码:  //  // read_blobfile。c - 读BLOBFILE的例子  //内存泄漏检测  // 在需要检测的地方放置语句:  // _CrtDumpMemoryLeaks();  // 以下3句的次序不能改变  #define _CRTDBG_MAP_ALLOC     #include  #include  // 包含唯一的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 select_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, "select BM,NAME,BIRTH,DATA from TEST where rownum<2", -1, 0, &err );  assert(rc==ORC_SUCCESS);  // 执行选取  rc = ORA_sqlstmt_select(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

以上是我对于这个问题的解答,希望能够帮到大家。

全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值