![]() |
|
![]() ![]() ![]() |
|
Denis |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
PostgreSQL 8.2, ADO, Delphi7
Подскажите плиз или дайте ссылку, где можно прочесть про хранение файлов в постгре. Какого типа должно быть поле в таблице, как производить чтение, запись. |
|||
|
||||
Denis |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
господа, это слишком легкий и глупый вопрос или правда никто помочь не может :(
уточню вопрос нужно хранить файлы типа *.doc и *.xls. Хотелось бы, чтобы они хранились в базе а не отдельно. Подскажите тип данных в постгре для файлов. |
|||
|
||||
chand0s |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 19.2.2007 Репутация: нет Всего: 3 |
Я в Postgres'е вообще не рублю, но сильно подозреваю, что для хранения больших двоичных данных в этой СУБД (как и в любой другой, в принципе), есть тип данных BLOB. |
|||
|
||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: нет Всего: 132 |
Тип называется bytea. А файлы хранить рекомендуется таки отдельно.
|
|||
|
||||
Denis |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Сделал поле в таблице типа bytea, а вот записать инфу не получается. Перерыл DRKB, пробовал несколько способов. При попытке записи *.doc пишет ошибку "Invalid class typecast"
Подскажите, как производится чтение/запись в поля (bytea) постгре-таблицы. |
|||
|
||||
SergeBS |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
Denis,
Покажи свой код. |
|||
|
||||
Denis |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Таблица 'temp' в постгре содержит единственное поле 'file' типа bytea
пробовал записать файл такими способами: 1)
Ошибка:"Invalid class typecast" 2)
Ошибка: "type "lo" does not exist" 3)
|
||||||
|
|||||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 1 Всего: 538 |
Это к базе данных уже не имеет отношения.
Модератор: перемещено из Общие вопросы по базам данных. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: нет Всего: 36 |
gрошу прощения. но думаю он пригодиться
как видно из кода, лучше хранить в TEXT - легче будет снимать дамп и поднимать его ![]() |
|||
|
||||
Denis |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
pythonwin, прошу прощения за мою неграмотность, но нельзя ли немного подробнее. Честно говоря не понял как пользоваться этим кодом
|
|||
|
||||
pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: нет Всего: 36 |
||||
|
||||
SergeBS |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
Denis,
DRKB:
|
||||
|
|||||
Denis |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Я первым делом перерыл DRKB (я там только один пример не пробовал) и пробовал этот пример таким образом:
если переменную описывать как blob: TBlobStream; ругается на несооветствие типов Пробовал так:
пробовал вместо ADOTable использовать ADOQuery, всё без результата |
||||
|
|||||
SergeBS |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
Denis,
Ну не знаю, что тебя заморочило. Вот работающий пример:
Запись - тоже по образу и подобию FAQ. Не помню - правил там типы блоба или нет. Делфи 5. |
|||
|
||||
Denis |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Ну а почему у меня не работает? Подскажите, плиз, где в этом коде ошибка?
|
|||
|
||||
SergeBS |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
Denis,
У тебя.
У меня. Разницу не видишь? |
||||
|
|||||
Denis |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Я там уже и bmRead, и bmWrite, и bmReadWrite там пробовал ставить. Всегда одна и та же Ошибка:"Invalid class typecast"
|
|||
|
||||
SergeBS |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
Denis,
А остальные строчки кто смотреть будет? Смешал коды записи в блоб-поле и чтения из блоба в четр-те что. ВНИМАТЕЛЬНО смотри на код чтения из блоба. И смотри в какой строке. |
|||
|
||||
Denis |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
SergeBS, до остальных строчек программа не доходит
![]() на самой первой строке blob := dm.dsDocFiles1.CreateBlobStream(dm.dsDocFiles1.FieldByName('file'), bmRead); выдает ошибку :( Может с таблицей что не так?
Добавлено через 1 минуту SergeBS, до остальных строчек программа не доходит ![]() на самой первой строке blob := dm.dsDocFiles1.CreateBlobStream(dm.dsDocFiles1.FieldByName('file'), bmRead); выдает ошибку :( Может с таблицей что не так?
Добавлено через 9 минут и 44 секунды SergeBS, до остальных строчек программа не доходит ![]() на самой первой строке blob := dm.dsDocFiles1.CreateBlobStream(dm.dsDocFiles1.FieldByName('file'), bmRead); выдает ошибку :( Может с таблицей что не так?
|
||||||
|
|||||||
SergeBS |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
Denis,
А теперь переименуй название поля file в file1 хотя бы - использовать ключевые слова как названия полей - иметь лишние грабли. У делфи вполне может от этого башню снести. Кроме создания таблицы нужно бы ее и заполнить. |
|||
|
||||
Denis |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
SergeBS, с названием поля све нормально, пробовал и другие. А таблицу надо из Delphi заполнить. Или ее до использования надо заполнить чем то? Если да, то как в постгре заполнить поле типа bytea?
|
|||
|
||||
SergeBS |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
Denis,
Ну так заполняй таблицу как описано в DRKB. Единственное - объявления типов в var - тоже нужно подобрать. Заполни таблицу, и имя все-таки поставь не конфликтующее с зарезервированными словами. |
|||
|
||||
Denis |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Но как можно заполнить базу, если при создании потока возникает ошибка? Переменная типа TBlobStream не подходит. Ведь если у тебя пример работает, а у меня такой же код нет, то я что-то делаю не так, но вот никак не могу найти ЧТО?
|
|||
|
||||
SergeBS |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
Denis,
Еще раз:
Читать умеешь?
|
||||
|
|||||
Denis |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Я ж так и писал! Но это не работает! Я уже не знаю какие типы еще пробовать! |
||||
|
|||||
SergeBS |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
Denis,
Проверяй, есть ли вообще таблица, сколько в ней записей и т.п.
Значит по неопытности грабли себе построил еще где-то. Например на Делфи обновления не ставил. Версия Делфи? Версия ADO? |
|||
|
||||
Denis |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
SergeBS,
Delphi7, таблица не содержит ни одной записи, т.к. заполнить не могу ![]() ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |