У меня есть таблица mysql с полем longblob. Я успешно вставил записи blob в таблицу и извлек их обратно в файлы на диске с помощью python.пишите longblob в файл из C++ mysql connector select
Теперь я хочу выбрать последнюю версию blob из таблицы и записать ее в файл на диске с использованием C++ и mysql-коннектора. Это код, который у меня есть до сих пор.
Он работает для небольших капель, но недостаточно для больших капель в моей базе данных. Максимальный размер буфера около 1000000.
Как написать большие файлы longblob из mysql select?
string appname = "rocket.exe";
driver = get_driver_instance();
con = driver->connect(mysql_server, mysql_user, mysql_password);
con->setSchema("app");
stmt = con->createStatement();
sqlstring =
"select installer"
" from app_table"
" where appname = '" + appname + "'"
" order by version desc "
" limit 1";
std::istream *blob;
res = stmt->executeQuery(sqlstring);
while (res->next()) {
blob = res->getBlob("installer");
}
char buffer[1000000];
memset(buffer, '\0', 1000000);
blob->read((char*)buffer,1000000);
std::ofstream outfile ("rocket2.exe",std::ofstream::binary);
outfile.write (buffer,1000000);
outfile.close();
delete res; // resultset
delete stmt; // statement
delete con; // connection
мой Баунти просто ищет фрагмент кода, чтобы заменить в приведенный выше код, который заставит его работать с гораздо большими блобами. Нет необходимости предоставлять всю программу. что у меня выше работает, просто не для очень больших капель – panofish