Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: СУБД и Delphi/Lazarus

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Victor Pyrlik
Статус: Профессионал
Рейтинг: 82
∙ повысить рейтинг >>
Попов Евгений Сергеевич
Статус: 3-й класс
Рейтинг: 14
∙ повысить рейтинг >>
Foxbox
Статус: 3-й класс
Рейтинг: 8
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / СУБД и Delphi

Выпуск № 540
от 20.05.2009, 16:05

Администратор:Gh0stik
В рассылке:Подписчиков: 286, Экспертов: 21
В номере:Вопросов: 1, Ответов: 1

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 167374: Как организовать запись и чтение массивов целых чисел объемом порядка 300 кбайт в InterBase(6,7) c памащью sql запросов? ...


Вопрос № 167.374
Как организовать запись и чтение массивов целых чисел объемом порядка 300 кбайт в InterBase(6,7) c памащью sql запросов?
Отправлен: 15.05.2009, 15:53
Вопрос задал: ЧУБАКОВ ЛЕОНИД ГЕННАДЬЕВИЧ (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Victor Pyrlik
Здравствуйте, ЧУБАКОВ ЛЕОНИД ГЕННАДЬЕВИЧ!

Для работы с массивом данных, впрочем как и графики, мультимедиа и другими данными (например, файлами Word, Excel) надо использовать тип данных BLOB, в зависимости от контекста – или 1 – текстовый, или 0 – бинарный (в Вашем случае, бинарный).

Т.е. создание таблицы выглядит примерно так:

Код:
CREATE GENERATOR GEN_TESTTBL_ID;

CREATE TABLE TESTTBL (
ID_TBL INTEGER NOT NULL,
DATE_TBL DATE DEFAULT 'NOW',
ARRAY_TBL DBLOB /* DBLOB = BLOB SUB_TYPE 0 SEGMENT SIZE 80 */
);
ALTER TABLE TESTTBL ADD CONSTRAINT PK_TESTTBL PRIMARY KEY (ID_TBL);

CREATE OR ALTER TRIGGER TESTTBL_BI FOR TESTTBL
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.ID_T BL IS NULL) THEN
NEW.ID_TBL = GEN_ID(GEN_TESTTBL_ID,1);
END


Для работы с такими данными (бинарными) использовать SQL запросы можно, но для текстовых данных.. для бинарных это не имеет смысла и следовательно нет возможности. Но есть UDF, т.е. функции во внешних библиотеках, позволяют нормально работать с таким типом полей.
В Delphi можно использовать стендартные компоненты для работы с базами данных, например TIBQuery.
Для записи бинарных данных (а Ваш случай – это массив целых чисел, т.е. бинарные данные) использовать TStream;
Например, Stream1 := IBQuery1.CreateBlobStream(IBQuery1ARRAY_TBL,bmReadWrite); и дальше уже работать как с простым потоком.. Можно писать из файлов и сохранять в файлы непосредственно методами поля BLOB :
IBQuery1ARRAY_TBL.SaveToStream();
IBQuery1ARRAY_TBL.LoadFromStream();
IBQuery1ARRAY_TBL.SaveToFile();
IBQuery1ARRAY_TBL.LoadFromFile();

Вот описание как написать самому полез ные функции
URL >>Написание UDF
А вот хорошая библиотека, которую можно загрузить совершено свободно
URL >>Библиотека функций rFunc


---------
Жизнь игрушка – пока играешь сам..
Ответ отправил: Victor Pyrlik (статус: Профессионал)
Россия, Екатеринбург
Тел.: 89043822027
ICQ: 490191733
----
Ответ отправлен: 18.05.2009, 23:53

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 249443 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5
    Комментарий оценки:
    Очень благодарен!Надеюсь на будущее сотрудничество! Всего доброго!


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

    Отправить вопрос экспертам этой рассылки

    Приложение (если необходимо):

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное