65,211
社区成员
发帖
与我相关
我的任务
分享
#include <occi.h>
#include <fstream>
#include <iostream>
using namespace std;
using namespace oracle::occi ;
int main()
{
oracle::occi ::Environment *env=Environment::createEnvironment (Environment ::DEFAULT);
Connection *conn=env->createConnection ("x10n6y","831122","orcl");
Statement *stmt=conn->createStatement ("INSERT INTO electronic_media(product_id,ad_id,ad_composite,ad_sourcetext) VALUES (:v1, :v2, :v3, :v4)");
Blob blob(conn);
blob.setEmpty();
Clob clob(conn);
clob.setEmpty ();
stmt->setInt(1,8888);
stmt->setInt(2,11001);
stmt->setBlob(3,blob);
stmt->setClob(4,clob);
stmt->executeUpdate();
conn->commit();
//conn->terminateStatement (stmt);
string sqlQuery = "SELECT product_id,ad_id,ad_composite FROM electronic_media FOR UPDATE";
stmt->setSQL (sqlQuery);
ResultSet *rs=stmt->executeQuery ();
while(rs->next())
{
Blob blob=rs->getBlob (3);
unsigned int blobLen=blob.length ();
unsigned int offset=1;
char*fileName=(char*)"blobdemo.bmp";
char* bufferR=new char[1024];
memset (bufferR,NULL,1024);
ifstream inFile;
inFile.open (fileName,ios::in);
if (!inFile)
{
delete[]bufferR;
return 1;
}
Stream* strm=blob.getStream ();
while(inFile)
{
memset(bufferR,NULL,1024);
inFile.read (bufferR,1024);
strm->writeBuffer(bufferR,strlen(bufferR));
}
strcpy(bufferR,"This piece for writeLastBuffer");
strm->writeLastBuffer (bufferR,1024);
blob.closeStream (strm);
inFile.close ();
delete[] bufferR;
}
string sqlQuery1 = "SELECT product_id,ad_id,ad_composite FROM electronic_media";
stmt->setSQL(sqlQuery1);
ResultSet *rset2= stmt->executeQuery ();
while (rset2->next ())
{
cout << "Product_id : " << (int)rset2->getInt(1) << endl;
cout << "Ad_id : " << (int)rset2->getInt(2) << endl;
Blob blob = rset2->getBlob (3);
unsigned char *buffer=new unsigned char[1024];
memset(buffer,NULL,1024);
//int bytesRead=blob.read (blobLen,buffer,blobLen,offset);
//for(int i=0;i<bytesRead;i++)
//{
// cout<<(int)buffer[i];
//}
//cout<<endl;
Stream *inStream=blob.getStream (1,0);
int bytesRead=inStream->readBuffer ((char*)buffer,1024);
while(bytesRead>0)
{
for(int i=0;i<bytesRead;i++)
{
cout<<(int)buffer[i];
}
bytesRead=inStream->readBuffer ((char*)buffer,1024);
}
cout<<endl;
delete []buffer;
system("pause");
return 0;
}
}
#include <string>
#include <cmath>
#include <occi.h>
#include <fstream>
#include <iostream>
using namespace oracle::occi;
using namespace std;
int main(int argc, char* argv[])
{
Environment *env = Environment::createEnvironment();
Connection *conn=env->createConnection("x10n6y","831122","orcl");
Statement *stmt = conn->createStatement("insert into documents values (:1)");
Clob doccontents(conn);
doccontents.setEmpty();
stmt->setClob(1, doccontents);
stmt->executeUpdate();
conn->commit();
stmt = conn->createStatement("select body from documents for update");
ResultSet *rs = stmt->executeQuery();
while(rs->next()==true)
{
Clob doccontents = rs->getClob(1);
}
unsigned char buffer[]={"0100101"};
doccontents.write (sizeof(buffer), buffer, sizeof(buffer), 1);//这里报内存错误
conn->commit();
system("pause");
}
#include <string>
#include <cmath>
#include <occi.h>
#include <fstream>
using namespace oracle::occi;
int main(int argc, char* argv[])
{
Environment *env = Environment::createEnvironment();
Connection *conn=env->createConnection("xxxxx","xxxxx","xxx");
unsigned char* buf;
std::ifstream f;
f.open ("c:\\11.txt",std::ios_base::binary);
f.seekg (0,std::ios_base ::end);
int len=f.tellg();
f.seekg (0,std::ios_base::beg);
buf=new unsigned char[len];
f.read ((char*)buf,len);
f.clear ();
f.close ();
Statement *stmt = conn->createStatement(" insert into documents values (:1)");
//create empty Clob
Clob doccontents(conn);
doccontents.setEmpty();
//1st insert will create LOB locator in database
stmt->setClob(1, doccontents);
stmt->executeUpdate();
conn->commit();
//now select the Clob again and add contents
stmt = conn->createStatement("select body from documents for update");
ResultSet *rs = stmt->executeQuery();
doccontents =rs->getClob(1); //每次执行到这里就报内存错误
doccontents.write(100, buf, 100, 1);
conn->commit();
}