powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / SQLite [игнор отключен] [закрыт для гостей] / С++: как данные из поля BLOB загнать в выделенную под них память?
4 сообщений из 4, страница 1 из 1
С++: как данные из поля BLOB загнать в выделенную под них память?
    #37433728
orfelin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
имею файд БД c кучей видеороликов - надо это все безобразие на диск в папочку выгрузить.
выгружалку не нашел - писать самому.
select * from videos сделать не проблема

в поле films тип BLOB хранится сам ролик. Я никак в описании SQLLite не могу найти АПИ для выгрузки данных в память


вобщем хелп ми плис.
...
Рейтинг: 0 / 0
С++: как данные из поля BLOB загнать в выделенную под них память?
    #37433858
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
С++: как данные из поля BLOB загнать в выделенную под них память?
    #37434409
orfelin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хех, вы думаете я гуглом не умею пользоваться или поиском по сайту.
когда читал эту документацию сегодня днем эмоции были только негативные а слова только матерные
более через жопу документацию написать наверное было сложнее.

убил 10 часов чтобы разобраться что делать надо как то так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
 sqlite3_blob *ppBlob;
    rc = sqlite3_blob_open( ppDb, "main", "videos", "videodata",  1  + j,  0  /*read only*/, &ppBlob );
 
    if( rc == SQLITE_OK )
    {
 
        int length      = sqlite3_blob_bytes( ppBlob );
        BYTE* videodata = (BYTE*)malloc( length );
 
        rc          = sqlite3_blob_read( ppBlob, videodata, length,  0  );
 
        char mSql[ MAX_PATH ] = {  0  };
        sprintf_s( mSql, "./res/%s.unk", videoname );
        HANDLE hFile = CreateFileA( mSql, GENERIC_READ|GENERIC_WRITE,  0 , NULL, CREATE_NEW,  0 , NULL );
 
        if(INVALID_HANDLE_VALUE != hFile )
        {
            DWORD mNumberOfBytesWritten =  0 ;                    
 
            ::WriteFile( hFile, videodata, length, &mNumberOfBytesWritten, NULL );
 
            ::CloseHandle( hFile );
        }
 
        free( videodata );
        sqlite3_blob_close( ppBlob );
    }

не уверен что все по корану но была бы дока потолковее может и было бы че приличное
...
Рейтинг: 0 / 0
С++: как данные из поля BLOB загнать в выделенную под них память?
    #37437374
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orfelin,

Для портабельного sqlite использовать CreateFileA ну совсем "не по Корану".
Пользуй обычные open, write.

Ну и твой видеофайл может не поместиться в один кусок памяти, который может выделить malloc (да и невыделение памяти бы проверять надобно)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / С++: как данные из поля BLOB загнать в выделенную под них память?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]