Ignore that, I wasn't thinking C++ :(

Does the CppSQLite demo work on your machine?

Martin

Kiril Dzolev wrote:

You're calling blobGet(), but blobGet is an unitialised variable of type "CppSQLite3Binary" (whatever that is). Doesn't your compiler warn you about that?

Martin

 > const unsigned char* putBLOBInBinary([...])
 >    {
 >    [...]
 >    CppSQLite3Binary blobGet;
 >
 >    [...]
 >    if (!q.eof()) {
 >        blobGet.setEncoded((unsigned char*)q.fieldValue("data"));


This is not realy for this forum, but maybe somebody can tell me what I am
doing wrong. I am using CppSQLite wrapper.

Code 1 : With this code "Segmentation fault"

const unsigned char* putBLOBInBinary(CppSQLite3DB &db, int &lengthBLOB) {
   CppSQLite3Query q;
   CppSQLite3Binary blobGet;

   q=db.execQuery("select data from bindata where id=1;");
   if (!q.eof()) {
       blobGet.setEncoded((unsigned char*)q.fieldValue("data"));
       lengthBLOB= blobGet.getBinaryLength();
       cout<<"Retrieved binary Length: "<<lengthBLOB <<endl;
   }
   return blobGet.getBinary();
}

function call from main()
const unsigned char* pBufferOut;
pBufferOut = putBLOBInBinary(db, lengthBLOB);

Code 2 : With this code is ok (if I dont use function)
   CppSQLite3Query q;
   CppSQLite3Binary blobGet;

   q=db.execQuery("select data from bindata where id=1;");
   if (!q.eof()) {
       blobGet.setEncoded((unsigned char*)q.fieldValue("data"));
       lengthBLOB= blobGet.getBinaryLength();
       cout<<"Retrieved binary Length: "<<lengthBLOB <<endl;
   }
   pBufferOut=blobGet.getBinary();

sorry if this is off topic,
Kiril







Reply via email to