Текущий архив: 2004.01.13;
Скачать: CL | DM;
ВнизBLOB фильтры Найти похожие ветки
← →
Simply Alex (2003-12-11 01:09) [0]Здравствуйте Мастера!
Я столкнулся со следующей проблемой.
БД Interbase. В одной из таблиц есть BLOB-поле, в котором хранятся аудиоданные (wave riff или mp3).
Вопрос: как оттуда эти данные прослушать и вообще достать с использованием BLOB-фильтров?
← →
Digitman (2003-12-11 08:28) [1]
> как оттуда эти данные прослушать
никак
сначала ты должен сделать запрос и получить в адр.пр-во кл.процесса данные этого блоб-поля. а уж потом делать с этими данными в своем кл.приложении все что тебе заблагорассудится - слушать, нюхать и т.д. и т.п.
> с использованием BLOB-фильтров
поясни, зачем вообще в дан.случае тебе потребовался блоб-фильтр ?
← →
Simply Alex (2003-12-11 17:23) [2]
> сначала ты должен сделать запрос и получить в адр.пр-во
> кл.процесса данные этого блоб-поля.
Имеется в виду взаимодействие с блоб-полем не через файл (блоб-файл-приложение)? Если ДА, то как это осуществить?
> поясни, зачем вообще в дан.случае тебе потребовался блоб-фильтр
> ?
Для преобразования типов данных. Из типа блоб-поля в аудиоданные, но если их можно выцепить и так, то вопрос про фильтры теряет свою актуальность...
← →
jack128 (2003-12-11 19:14) [3]query.sql.text := "select my_wav from my_table";
query.transaction.statrtransaction;
with query do
try
if not EOF then
TblobField(Fields[0]).SaveToFile("c:\mywav.wav");
query.tarnsaction.commit;
except
query.tarnsaction.rollback;
raise;
end;
// теперь проигрывай файл..
← →
jack128 (2003-12-11 19:15) [4]только не забыть открыть запрос
try
Open;
if not EOF then
← →
Silver Alex (2003-12-12 10:19) [5]
> jack128 © (11.12.03 19:14) [3]
а зачем открывать в транзакции?
← →
Stas (2003-12-12 10:23) [6]Незнаю как там в интербейсе, но в Ado работает:
AdoQuery1Sound.SaveToStream (strm);
PlaySound (strm.Memory ,0,SND_MEMORY+SND_ASYNC);
← →
Zacho (2003-12-12 15:00) [7]
> Silver Alex © (12.12.03 10:19) [5]
А любой запрос может быть выполнен только в контексте какой-либо транзакции. Другое дело, что некоторые компоненты доступа могут стартовать транзакции автоматически.
← →
jack128 (2003-12-12 15:04) [8]
> а зачем открывать в транзакции?
Привычка.. Я вообще считаю, что трансакции нужно самому открывать...(если ты работаешь не через BDE, конечно)
← →
Silver Alex (2003-12-12 16:18) [9]
> Zacho © (12.12.03 15:00) [7]
да ну?может это только в IB ? Или нет?
← →
Stas (2003-12-12 16:21) [10]>>Zacho © (12.12.03 15:00) [7]
MS SqlServer сам проводит транзакции, я о них и недумаю. Или я чего-то непонял.
← →
Zacho (2003-12-12 16:39) [11]
> Silver Alex © (12.12.03 16:18) [9]
Не только. Но некоторые сервера могут запускать "транзакцию по умолчанию". IB не может (да и не надо), а вопрос был именно по IB.
И вообще, даже только читающий запрос все-равно должен работать в контексте какой-либо транзакции. Про уровни изоляции слышал ? :)
> Stas © (12.12.03 16:21) [10]
Причем здесь MS SQL ? Исходный вопрос был про IB, и не надо приплетать всякие MS SQL, Oracle, DB2 и т.д. :-)
← →
Stas (2003-12-12 16:44) [12]>>Zacho © (12.12.03 16:39) [11]
Я с тобой согласен.
Мой ответ был для Silver Alex © (12.12.03 16:18) [9]
А я твое имя нечаянно вставил. :)
← →
Zacho (2003-12-12 16:49) [13]
> Stas © (12.12.03 10:23) [6]
Кстати, и с IB можно работать через ADO. ADO - не СУБД, а всего лишь одна из технологий работы с СУБД :)
← →
Silver Alex (2003-12-12 16:52) [14]
> Zacho © (12.12.03 16:39) [11]
знаю что в IB такая лабуда.И знаю в компонентах FIB нужно явно стартовать транзакцию.А про другие как-то не слыхал, но всегда есть чему поучиться.Нельзя ведь все знать :)
← →
Zacho (2003-12-12 16:57) [15]
> Silver Alex © (12.12.03 16:52) [14]
>
> Нельзя ведь все знать :)
Разумеется. :) Я, например, про MS SQL очень мало знаю :)
← →
Digitman (2003-12-13 11:48) [16]
> аудиоданные
что ты подразумеваешь под "аудиоданными" ?
если содержимое блоб-поля есть сохраненное ранее в него содержимое некоего аудиофайла, то содержимое этого блоб-поля и есть некие аудиоданные !
ты читаешь это блоб-поле в ориг.виде в АП кл.процесса, а дальше делаешь с ними что хочешь
← →
Simply Alex (2003-12-14 14:56) [17]
> что ты подразумеваешь под "аудиоданными" ?
Аудиоданные - вставленный ранее в БЛОБ-поле wave-файл (riff).
← →
Simply Alex (2003-12-14 14:58) [18]Все спасибо за обсуждение! Сделал что хотел! Все получилось!
← →
Digitman (2003-12-14 15:11) [19]
> вставленный ранее в БЛОБ-поле wave-файл (riff).
riff стал riff"ом ТОЛЬКО после того, как клиент прочитал из блоб-поля данные и соизволил их попытаться интерпретировать именно как riff
← →
Simply Alex (2003-12-15 17:42) [20]
> riff стал riff"ом ТОЛЬКО после того, как клиент прочитал
> из блоб-поля данные и соизволил их попытаться интерпретировать
> именно как riff
Согласен. Данные читаются из БЛОБ, затем интерпретируются как wave riff.
Страницы: 1 вся ветка
Текущий архив: 2004.01.13;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.008 c