C++ 在c+中读取大型二进制文件+;
我正在尝试读取大小约为360kb的二进制文件(.dat格式),并将其插入oracle数据库的blob列中。我面临的问题是,我的代码没有插入完整的文件,而是只插入了部分文件。我想知道是否有任何方法可以读取大型二进制文件。此代码适用于小型二进制文件。。。这是我的密码C++ 在c+中读取大型二进制文件+;,c++,oracle,C++,Oracle,我正在尝试读取大小约为360kb的二进制文件(.dat格式),并将其插入oracle数据库的blob列中。我面临的问题是,我的代码没有插入完整的文件,而是只插入了部分文件。我想知道是否有任何方法可以读取大型二进制文件。此代码适用于小型二进制文件。。。这是我的密码 #include <iostream> #include <fstream> #include <string.h> #include <stdio.h> #include <occ
#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;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间oracle::occi;
使用名称空间std;
int main(){
环境*env;
连接*连接;
声明*stmt;
env=Environment::createEnvironment(Environment::DEFAULT);
试一试{
conn=env->createConnection(“oracle”、“oracle”、“xxxxx”);
stmt=conn->createStatement(“插入到velodyne(名称、信息)值(:x,:y)”中);
stmt->setInt(1112);
streampos大小;
char*memblock;
ifstream fileIn(“filename”,ios::in | ios::binary | ios::ate);
if(fileIn.is_open())
{
size=fileIn.tellg();
是否可以检查返回的内容fileIn.good()
和fileIn.gcount()
在fileIn.read()
之后但在fileIn.close()
之前?如果您的数据库API具有加载blob数据的函数,请使用该函数。@mauve fileIn.gcount()返回我试图插入的实际文件大小,但blob列仅显示文件的一部分execution@user4215256您确定数据库没有blob大小限制吗?gcount()的值是多少
正在返回,最终blob的大小是多少?@mauve是的,我确定blob的大小限制。我们可以在blob中插入最大4GB。gcount()值为360kb(完整文件大小),但插入后blob只有33kb…我尝试插入断点,它在memblock处显示0xCCCC Bad ptr。。。。