Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Способ для хранения массива в поле... [D7, MSSQL]


Страницы:   1 2

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]

Ты когда ни будь нам расскажешь, что за массивы?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо