![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Способ для хранения массива в поле... [D7, MSSQL]
HepB © (2005-07-29 20:08:00)Возникла потребность в хранении массива целых чисел, в моём случае в одной записи таблицы нужно сохранить 32 таких массива. Подскажите способ. Возможно ли это осуществить используя тип данных поля binary или varbinary? (MS SQL Server 2000)
HepB (2005-07-30 19:49:00) [1]Leonid Troyanovsky, спасибо огромное.
А так же спасибо всем, кто пытался хоть как-то помочь.
Респект Вам, МАСТЕРА!
Leonid Troyanovsky (2005-07-30 19:35:00) [2]
> HepB (30.07.05 18:51) [37]
> как из поля в последствии выдернуть этот поток?
> Другими словами, как в поток загрузить содержимое поля?
IMHO, в обратном порядке
SQL.Text := 'select myblob from table1 where ..';
Open;
(Fields[0] as TBlobField).SaveToStream(..);
Ну, про особенности ты где-нить в хелпе почитаешь.
--
Regards, LVT.
HepB (2005-07-30 18:51:00) [3]Leonid Troyanovsky,
как из поля в последствии выдернуть этот поток?
Другими словами, как в поток загрузить содержимое поля?
Leonid Troyanovsky (2005-07-30 18:01:00) [4]
> Какой Stream нужно использовать, что бы в него можно было
> поместить массив и потом загрузить при помощи
Например, TMemoryStream.
Хотя, можно и напрямую установить размер параметра
и Move туда массив, но я не помню свойств Parameters,
а дельфи под рукой нет.
--
Regards, LVT.
HepB (2005-07-30 17:54:00) [5]Leonid Troyanovsky, спасибо.
Какой Stream нужно использовать, что бы в него можно было поместить массив и потом загрузить при помощи вышеуказанного кода?
Leonid Troyanovsky (2005-07-30 16:41:00) [6]
> HepB (30.07.05 15:55) [28]
> Для меня важно как впихнуть массив в одно поле. Каким способом
> не столь важно. Вы мне напишите хоть какой-то, пожалуйста...
Грубо говоря, что-то вроде
with ADOQuery do
begin
SQL.Text := 'INSERT INTO MyTable (.., blobFieldName) VALUES (.., :content)';
..
Parameters.ParamByName('content').LoadFromStream(..);
Prepare;
ExecSQL;
end;
Подробности почитаешь в хелпе.
--
Regards, LVT.
HepB (2005-07-30 16:39:00) [7]Честно говоря, я уже в отчаянии. Мне столько раз на этом форуме помогали. Теперь же целый день прошёл без толку :(
Попробую ещё раз сформулировать проблему:
Поместить один массив целых чисел в одно поле записи.
Anatoly Podgoretsky (2005-07-30 16:28:00) [8]HepB (30.07.05 16:19) [30]
Не надо всю, только относящую к этому, включая первичные ключи.
Хотя дело твое можешь не приводить ни каких данных, ведь никто не заставляет.
HepB (2005-07-30 16:24:00) [9]Осталось выяснить существует ли этот способ...
HepB (2005-07-30 16:19:00) [10]Anatoly Podgoretsky, я не пойму Вас. Какое значение здесь имеет структура таблицы, там уйма полей. Мне же хотелось узнать только механизм хранения массива целых чисел в одном поле. У меня была идея вообще записывать числа через запятую в одну строчку, но если есть способ поместить весь массив в поле типа байнари, то почему бы не попробовать?
Anatoly Podgoretsky (2005-07-30 16:05:00) [11]Приведи структуру таблицы
HepB (2005-07-30 15:55:00) [12]Для меня важно как впихнуть массив в одно поле. Каким способом не столь важно. Вы мне напишите хоть какой-то, пожалуйста...
HepB (2005-07-30 15:52:00) [13]sniknik, остроумие - это хорошо :)
Одна запись будет хранить 32 поля, каждое из которых содержит массив.
Anatoly Podgoretsky (2005-07-30 15:47:00) [14]Еше не вечер.
sniknik (2005-07-30 15:43:00) [15]кстати про что подумал...
массивы хочеш в 1-поле "пихнуть"? притом
HepB (30.07.05 01:36) [6]
> массивы не более 255 элементов будут содержать.
они разные, судя по этой фразе... так? а в следующей записи в этом поле будут другие?
тогда нужны поля в которых хранятся смещения этих массивов либо придумывать какието методы разделения (префиксы) их друг от друга. если префиксы то это значит выпадения части значений возможных в массивах (совпадет с префиксом - вместо одного массива будет два...) и т.д.
> Пример для:
> 1. помежения массива целых чисел в поток
одного массива? а вроде был разговор про 32, а после n. (нет n мало... возьмем m! ;о)))
> 2. помещение, полученного, потока в поле таблицы
используя какой метод доступа?
> 3. обратные операции
может проще сразу программу за тебя написать? недорого возьму. (но предупреждаю все в этом мире относительно ;о)))
p.s. песня только начинается ;о))
Anatoly Podgoretsky (2005-07-30 15:27:00) [16]binary 255*4
HepB (2005-07-30 15:26:00) [17]>> лучше - пример.
>из яндекса не хватило?
хватило для того, что бы я сюда вернулся...
>и пример для чего? обших "для всего" не бывает. для обшего >только расссуждения в обшем.
Пример для:
1. помежения массива целых чисел в поток
2. помещение, полученного, потока в поле таблицы
3. обратные операции
HepB (2005-07-30 15:23:00) [18]Я уж думал всё и так чётко. Даже написал:
HepB (30.07.05 13:58) [11]
Нужно в поле типа blob или binary загружать/выгружать массив a:array[1..255] of integer;
sniknik (2005-07-30 15:20:00) [19]> лучше - пример.
из яндекса не хватило?
и пример для чего? обших "для всего" не бывает. для обшего только расссуждения в обшем.
Anatoly Podgoretsky (2005-07-30 15:13:00) [20]Ты когда ни будь нам расскажешь, что за массивы?