我现在在C语言中用ProC操作Oracle数据库,简单看了一些ProC的资料,数据库连接、简单读写、事务、异常处理等都没多大问题,但对大二进制字段blob的读写一筹莫展。搜遍百度谷歌都没找到实用的参考,这里有没有哪位有这方面的经验,请指教一二。
由于以前多用SQL Server,Oracle刚接触不久,请不要讲得太高深,最好辅以代码,谢谢!
级别所限,只能给100分,请多包含哈!
由于以前多用SQL Server,Oracle刚接触不久,请不要讲得太高深,最好辅以代码,谢谢!
级别所限,只能给100分,请多包含哈!
http://topic.csdn.net/t/20060322/15/4632039.html
你把c语言中 blob的直接换成varchar2(4000)试下看看吧!
{
EXEC SQL WHENEVER SQLERROR GOTO error; EXEC SQL BEGIN DECLARE SECTION;
VARCHAR id[50], blob_content[4000];
EXEC SQL END DECLARE SECTION;
memset(id.arr, 0, sizeof(id.arr));
memset(blob_content.arr, 0, sizeof(blob_content.arr));
memcpy(id.arr, keyID, strlen(keyID));
memcpy(blob_content.arr, content, strlen(content));
id.len = (unsigned short)strlen((char *)id.arr);
blob_content.len = (unsigned short)strlen((char *)blob_content.arr); EXEC SQL INSERT INTO MyTable(ID, BlobContent)
VALUES(:id, :blob_content); printf("\n保存数据成功!");
return 0;
error :
printf("\n保存数据错误!");
return -1;
}结果是不行。我想对于做过这方面的前辈,这个问题应该不是问题吧,谁给指导指导嘛
刚查了一下,了解到一个概念——OCI,下面帖一下简单介绍(高手们别笑话,本人确是Oracle菜鸟,来这里丢人显眼了): Oracle调用接口(Oracle Call Interface简称OCI)提供了一组可对Oracle数据库进行存取的接口子例程(函数),通过在第三代程序设计语言(如C语言)中进行调用可达到存取Oracle数据库的目的。
在普通的情况下,用户可以通过SQL和PL/SQL来访问数据库中的数据。Oracle数据库除了提供SQL和PL/SQL来访问数据库外,还提供了一个第三代程序设计语言的接口,用户可以通过C、COBOL、FORTRAN等第三代语言来编程访问数据库。OCI就是为了实现高级语言访问数据库而提供的接口。OCI允许开发者在程序里使用SQL和PL/SQL来访问数据库。开发者可以使用第三代语言来编写程序,而使用OCI来访问数据库。
OCI是一由一组应用程序开发接口(API)组成的,Oracle提供API的方式是提供一组库。这组库包含一系列的函数调用。这组函数包含了连接数据库、调用SQL和事务控制等。在安装DBMS SERVER或者客户端的时候,就安装了OCI。
DBMS_LOB包使用和维护
Read a File, WRITE a BLOB Example