取出大数据量CLOB数据
来源:互联网 发布:淘宝店费用一年多少钱 编辑:程序博客网 时间:2024/04/27 13:28
VC中,用ADO取出大数据量CLOB数据(可能有几十M)循环取数据,第一次取时没有问题,取完后我关闭了记录集,第二次取时没问题,在关闭记录集时就出错?如果不关闭记录集,那在第三次取数据时,在m_pRecordset.CreateInstance(__uuidof(Recordset));就出错,User breakpoint called from code at 0x77f767cd 网上查此问题有人说是内存没管理好会出这种问题?但我小数据量时没问题,大数据量就有问题
小数据量测试是没有取那个CLOB数据,只取了其它字符串字段的值。
sgnaw(李逍遥) ( ) 信誉:115 Blog
发现一个好东西, 原来 oracle 早就想到别人可能会用其它语言来访问他们的数据库, 因此, 他们已经封闭好了一些类了. 可以用 VC++ 和 Visual Basic 来访问各种类型的数据, 非常之方便. 比如他用下面三句话就可以打开一个表了:
OStartup();
ODatabase odb("ExampleDB", "scott", "tiger");
ODynaset odyn(odb, "SELECT * FROM PART");
给 Visual C++ 提供的是 OO4O C++ Class Library , 是个静态库, 有相应的 include 头文件还有 MFC 的 Demo 比如 oracle 9i 位置在
$oracle/ora90/oo4o/CPP
例如有个表
SQL> desc test_clob;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER(3)
CLOBCOL CLOB
要查询其中的内容, 则要把 $oracle/ora90/oo4o/CPP/LIB/ORACLM32.LIB 文件加到工程中, 然后下面的程序演示了如何读上面的 clobcol 字段:
----------------------------------------------------------
// OraConsole.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "oracl.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
OStartup();
// 下面输入数据库名, 用户名, 密码
ODatabase odb("YourDatabase", "YourUser", "YourPasspord");
ODynaset odyn(odb, "select * from test_clob");
if (!odyn.IsOpen())
{
cout << "Connect Error: " << odb.GetErrorText() << endl;
cout << "SQL Error: " << odyn.GetErrorText() << endl;
return 1;
}
OClob oclob;
odyn.GetFieldValue("clobcol", &oclob);
unsigned char *buffer = 0;
try
{
unsigned long size = oclob.GetSize();
buffer = (unsigned char *)malloc(size);
memset(buffer, 0, size);
oclob.EnableStreaming(size);
short status = OLOB_NEED_DATA;
unsigned long amtread = 0;
while (status == OLOB_NEED_DATA)
{
// 下面是把数据读到 buffer 中
amtread = oclob.Read(&status, buffer, size);
}
oclob.DisableStreaming();
}
catch(OException E)
{
cout << E.GetFailedMethodName() << " Error: " << E.GetErrorText() << endl;
}
if (buffer)
free(buffer);
return 0;
}
----------------------------------------------------------
详情参看 $oracle/ora90/oo4o/CPP/WORKBOOK/LOB 目录里的 CLOBREAD.CPP
- 取出大数据量CLOB数据
- Clob处理大数据
- CLOB大数据对象
- 大数据量数据优化
- oracle varchar2(4000)如何插入大数据量(不用clob)
- jdbc大数据 CLOB BLOB
- 大数据量数据删除策略
- 大数据量导出Excel数据
- WebService处理大数据量数据
- tcp 接收大数据量数据
- WebService处理大数据量数据
- oracle 大数据量数据插入
- ORACLE大数据量数据删除
- 大数据量数据导出excle
- sqlldr 导入大数据量数据
- 处理大对象数据-处理CLOB数据
- 处理大数据对象:处理CLOB数据
- JDBC处理大文本数据-Clob
- 用一个WEB服务或普通站点 实现这样一个效果?以URL请求,返回一个XML文档
- 插入一条记录后,马上得到新插入记录ID值的方法
- ora-03113 通信信道的文件结束 解决办法
- xvid源码在Visual C++ 6.0下成功编译的方法
- http 500内部服务器错误的解决方法
- 取出大数据量CLOB数据
- Eclipse3.1中体验J2SE 5.0之枚举类型
- document对象的属性和方法
- petshop4.0 详解之一
- Visual C#数据库编程
- 使用JFreeChart生成热点图表
- c#常用函数和方法集
- 有session的取网页的数据
- Java Web实践专题——Eclipse中CVS的使用