我正在尝试读取大小约为360kb的二进制文件(.dat格式)并将其插入到oracle数据库的blob列中。我面临的问题是我的代码没有插入完整的文件,但只插入文件的一部分。我想知道是否有任何方法来读取大型二进制文件。这个代码适用于小二进制文件...这是我的代码......
#include <iostream>
#include <fstream>
#include <string.h>
#include <stdio.h>
#include <occi.h>
using namespace oracle::occi;
using namespace std;
int main () {
Environment *env;
Connection *conn;
Statement *stmt;
env = Environment::createEnvironment (Environment::DEFAULT);
try{
conn = env -> createConnection("oracle", "oracle", "xxxxx");
stmt = conn -> createStatement("insert into velodyne(name,info) VALUES(:x,:y)");
stmt -> setInt(1,112);
streampos size;
char* memblock;
ifstream fileIn ("filename", ios::in|ios::binary|ios::ate);
if (fileIn.is_open())
{
size = fileIn.tellg();
cout<<"size of the file is:"<< size <<endl;
memblock = new char [size];
//cout<<"size of the memblock is:"<< memblock <<endl;
fileIn.seekg (0, ios::beg);
fileIn.read (memblock, size);
fileIn.close();
}
Bytes *Data = new Bytes((unsigned char*) memblock, size);
stmt -> setBytes(2, *Data);
stmt -> executeUpdate();
conn->commit();
delete[] memblock;
conn->terminateStatement (stmt);
}
catch (SQLException ea)
{
cout<<ea.what();
}
Environment::terminateEnvironment (env);
return 0;
}