powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / хранение и чтение бинарных файлов в firebird
12 сообщений из 12, страница 1 из 1
хранение и чтение бинарных файлов в firebird
    #39113781
Serega325
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, мне нужно хранить в базе exe файлы.

есть таблица
create table nametable (
id_tbl D_ID NOT NULL,
file_bin BLOB
);

Подскажите пожалуйста как вставить бинарный файл в базу firebird ? Возможно ли прочитать из базы exe-к и запустить его на исполнение ? Можно это сделать только через sql запрос или ibeblock ?
...
Рейтинг: 0 / 0
хранение и чтение бинарных файлов в firebird
    #39113785
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega325Подскажите пожалуйста как вставить бинарный файл в базу firebird ?

так же как и любой другой файл. Читай документацию по работе с BLOB к компонентам доступа с которыми ты работаешь.

Serega325Возможно ли прочитать из базы exe-к и запустить его на исполнение ?

на клиентской стороне возможно. Только на фига?
...
Рейтинг: 0 / 0
хранение и чтение бинарных файлов в firebird
    #39113813
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega325Можно это сделать только через sql запрос или ibeblock ?
http://www.ibexpert.net/ibe/index.php?n=Doc.IbecExec
...
Рейтинг: 0 / 0
хранение и чтение бинарных файлов в firebird
    #39113846
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисТолько на фига?А что такого? Мы так делаем, вполне себе. Скомпилировал новую версию АРМа, вбросил базу, далее юзеры растащат по мере надобности, автоматически.
Предлагаешь пару-тройку сотен экзешников разослать почтовыми голубями? Есть же база, там все и хранится и всем кому надо раздается.
...
Рейтинг: 0 / 0
хранение и чтение бинарных файлов в firebird
    #39113883
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyСимонов ДенисТолько на фига?А что такого? Мы так делаем, вполне себе. Скомпилировал новую версию АРМа, вбросил базу, далее юзеры растащат по мере надобности, автоматически.
Предлагаешь пару-тройку сотен экзешников разослать почтовыми голубями? Есть же база, там все и хранится и всем кому надо раздается.
+100500

Еще огромнейшый позитив - восттановил бекап 2-летней давности, и у тебя сразу есть все правильные версии бинарей для работы. И не надо помнить/хранить соответствия версии базы данных и соответствующие ей версии бинарников.
...
Рейтинг: 0 / 0
хранение и чтение бинарных файлов в firebird
    #39114171
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня программа при старте проверяет наличие обновлений, при необходимости скачивает, себя переименовывает в old_имя.exe, и на свое место ставит новую версию. После чего предлагает запуститься повторно. При старте программы удаляю old_имя.exe
...
Рейтинг: 0 / 0
хранение и чтение бинарных файлов в firebird
    #39114655
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк ЕвгенийУ меня программа при старте проверяет наличие обновлений, при необходимости скачивает, себя переименовывает в old_имя.exe, и на свое место ставит новую версию. После чего предлагает запуститься повторно. При старте программы удаляю old_имя.exe

У меня почти так же.
Программа при запуске смотрит в базе версию. Если есть более новая чем сама - запускает лежащий рядом обновлятор, а сама завершается. Обновлятор коннектится к базе, выкачивает что сказано, кладет рядом, запускает то что скачал, сам завершается.

Для юзерей обновление exe выглядит как некоторая задержка запуска с морганием окошка.
...
Рейтинг: 0 / 0
хранение и чтение бинарных файлов в firebird
    #39115122
Serega325
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, что получилось, но IbExpert виснет, когда размер файла >10 Мб . Как ibeblock или sql-ем прочитать exe-файл размера
50 - 100 Мб.

set names win1251;
set sql dialect 3;
SET TERM ^;
execute ibeblock
as
declare variable iVal BLOB;
begin
OdbcCon = ibec_CreateConnection(__ctODBC, 'DBNAME=localhost:c:\database.fdb; DRIVER=Firebird/InterBase(r) driver; UID=SYSDBA;PWD=masterkey;Role=RDB$ADMIN;');
ibec_UseConnection(OdbcCon);
FileName = 'f:\programm.exe';
FH = ibec_fs_OpenFile(FileName, __fmOpenRead);
if (FH is null) then
Exit;

while (not ibec_fs_eof(FH)) do
begin
if (i<1) then
iVal = ibec_fs_ReadByte(FH);
else
iVal = iVal || ibec_fs_ReadByte(FH);
end
ibec_fs_CloseFile(FH);
insert into nametable(file_bin) values (:iVal);
ibec_CloseConnection(OdbcCon);
end^
SET TERM ;^
...
Рейтинг: 0 / 0
хранение и чтение бинарных файлов в firebird
    #39115135
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega325,

А почему бы загрузку-выгрузку делать не через IBEBlock, а напрямую из программы через блобы?

По сабжу. Я не в курсе внутренностей IBExpert-a, но судя по названию функции (ibec_fs_ReadByte) файл считывается побайтово, что можеть быть довольно долго само по себе.
...
Рейтинг: 0 / 0
хранение и чтение бинарных файлов в firebird
    #39115137
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega325,

Ты с ума что-ли сошел читать побайтно и конкатенировать каждый байт с предыдущими? Это ж тормоза тормознутные!
ibec_LoadFromFile используй.
...
Рейтинг: 0 / 0
хранение и чтение бинарных файлов в firebird
    #39115155
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertТы с ума что-ли сошел
Да ещё и через ODBC...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
хранение и чтение бинарных файлов в firebird
    #39115156
Serega325
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertSerega325,

ibec_LoadFromFile используй.

подставил эту функцию. ibec_LoadFromFile почему-то только один байт считывает.

set names win1251;
set sql dialect 3;
SET TERM ^;
execute ibeblock
as
declare variable iVal BLOB;
begin
OdbcCon = ibec_CreateConnection(__ctODBC, 'DBNAME=localhost:c:\database.fdb; DRIVER=Firebird/InterBase(r) driver; UID=SYSDBA;PWD=masterkey;Role=RDB$ADMIN;');
ibec_UseConnection(OdbcCon);
FileName = 'f:\programm.exe';

iVal = ibec_LoadFromFile(FileName);

insert into nametable(file_bin) values (:iVal);
commit;
ibec_CloseConnection(OdbcCon);
end^
SET TERM ;^
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / хранение и чтение бинарных файлов в firebird
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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