Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.08.2019, 16:35
pegus pegus вне форума
Прохожий
 
Регистрация: 01.08.2019
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Запись массива из БД в переменную и обратно

Добрый день,

Не могу нигде найти как записать массив целых чисел из базы данных в локальную переменнную и обратно используя TFDQuery. Все манипуляции не работают:

var arr: Array of integer;

arr:=FDQuery1.FieldByName('Numbers').Value;
arr:=FDQuery1.FieldValues('Numbers');


Может кто знает?
Ответить с цитированием
  #2  
Старый 02.08.2019, 00:04
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,003
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А какой тип поля и что в нем хранится?
Ну или приведи код записи в это поле...
Ответить с цитированием
  #3  
Старый 02.08.2019, 08:17
pegus pegus вне форума
Прохожий
 
Регистрация: 01.08.2019
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Как я уже писал ранее, тип переменной в базе данных PostgreSQL это массив целых чисел, то есть integer[], кода как такового нету, по той причине что я не знаю как «получить» этот массив из базы и присвоить его переменной. Я всегда пользовался методом например FieldByName(‘filedname’).AsInteger , но в данном случае он не работает, массив вытянуть не возможно.
Ответить с цитированием
  #4  
Старый 02.08.2019, 14:56
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
Сообщение

Так может там просто строка чисел с разделителем хранится, а не массив целых чисел, как Вы написали? Ибо "тип переменной в базе данных PostgreSQL это массив целых чисел, то есть integer[]" я такого не знаю. И судя из документации, такого и нет.
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #5  
Старый 02.08.2019, 15:37
pegus pegus вне форума
Прохожий
 
Регистрация: 01.08.2019
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Kailon
Так может там просто строка чисел с разделителем хранится, а не массив целых чисел, как Вы написали? Ибо "тип переменной в базе данных PostgreSQL это массив целых чисел, то есть integer[]" я такого не знаю. И судя из документации, такого и нет.

Как это нету?

https://www.postgresql.org/docs/9.2/arrays.html

В PostreSQL Integer: это переменная целого числа, Integer[5] это уже массив из 5 целых чисел, Integer [5][5] это уже двумерный масив и т.д. и так со многими остальными типами данных.

Последний раз редактировалось pegus, 02.08.2019 в 15:42.
Ответить с цитированием
  #6  
Старый 04.08.2019, 12:34
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 173
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Цитата:
Сообщение от pegus
...Я всегда пользовался методом например FieldByName(‘filedname’).AsInteger , но в данном случае он не работает...
Вот это "не работает", при наличии множества вариантов ситуаций, за этим скрывающихся, - ну это же совершенно неконкретно. Что получаете? Ошибку? Не то целое значение? Всегда ноль? И совершенно непонятна структура БД. Даёте ссылку на хелп, мол, разберитесь там сами и мне ответьте. Гораздо правильнее было бы описать здесь словами эту структуру, это значительно повышает шансы на ответ.
Ответить с цитированием
  #7  
Старый 05.08.2019, 11:56
DenSarych DenSarych вне форума
Прохожий
 
Регистрация: 02.08.2018
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Не могу нигде найти как записать массив целых чисел из базы данных в локальную переменную и обратно используя TFDQuery
Вариант 1 (рекомендуемый).
Отказаться от массивов. Использовать blob, или обычные, скалярные типы полей таблицы.

Вариант 2.
Работать с элементами массива по отдельности:
Код:
select Numbers[1] as Numbers_1, Numbers[2] as Numbers_2
  from MyTable;

Код:
arr[0]:=FDQuery1.FieldByName('Numbers_1').AsInteger;  
arr[1]:=FDQuery1.FieldByName('Numbers_2').AsInteger; 

Вариант 3.
FireDAC.PostgreSQL Arrays Sample
This sample demonstrates how to use the TFDParam.ArrayType property to send arrays to a PostgreSQL database server using FireDAC.
http://docwiki.embarcadero.com/CodeE..._Arrays_Sample
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:36.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter