Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
 Чтение данных из TADOConnection  [new]
Pupkin
Member

Откуда:
Сообщений: 120
C++Builder, win 10

имею такое:
    TADOConnection *cnn;//Определён в дизайнере и connectionstring там же
    cnn->Execute("update table set value='qwe' where ..."); //Всё прописывается правильно. нет вопросов

Теперь хочу написать примерно так, но не знаю как
    String ss=cnn->Execute("select value from table where...);

Подскажите как?
    String ss=cnn->Execute("select value from table where...);


Сообщение было отредактировано: 11 янв 21, 01:21
9 янв 21, 22:55    [22260837]     Ответить | Цитировать Сообщить модератору
 Re: Чтение данных из TADOConnection  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

http://docwiki.embarcadero.com/Libraries/Sydney/en/Data.Win.ADODB.TADOConnection.Execute
Тебе нужен второй оверлоад.

Posted via ActualForum NNTP Server 1.5

9 янв 21, 23:19    [22260844]     Ответить | Цитировать Сообщить модератору
 Re: Чтение данных из TADOConnection  [new]
Pupkin
Member

Откуда:
Сообщений: 120
Dimitry Sibiryakov

http://docwiki.embarcadero.com/Libraries/Sydney/en/Data.Win.ADODB.TADOConnection.Execute
Тебе нужен второй оверлоад.
Чуть ниже второго оверлоада есть дескриптор в котором описаны значения всех параметров. Обратите внимание, что ни в одном описываемом параметре отсутствуют в каковом из них сидит искомое значение.
Тебе нужен второй оверлоад.
Кстати, Почему не первый?
и еще
Не нужно предлагать ссылки на "нерешабельное корифейство". Пожалуйста снизойдите переписать мою неправильную строку (если знаете как) из первого поста.

String s=cnn->Execute ...


, а я её обдумаю по вашей замечательной ссылке

Сообщение было отредактировано: 11 янв 21, 01:16
10 янв 21, 00:02    [22260864]     Ответить | Цитировать Сообщить модератору
 Re: Чтение данных из TADOConnection  [new]
White Owl
Member

Откуда:
Сообщений: 12682
_Recordset rs = cnn->Execute("select value from table where...);


А потом в цикле идешь по rs и читаешь его строки.

Сообщение было отредактировано: 11 янв 21, 01:15
10 янв 21, 00:45    [22260871]     Ответить | Цитировать Сообщить модератору
 Re: Чтение данных из TADOConnection  [new]
Pupkin
Member

Откуда:
Сообщений: 120
А потом в цикле идешь по rs и читаешь его строки.

rs->RecordCount возвращает единицу и это правильно (соответствует моему в where)

далее
rs->FieldByName ... не катит
rs->Fields ... не катит

В каком свойстве RS сидит возвращаемое значение?
10 янв 21, 17:53    [22261149]     Ответить | Цитировать Сообщить модератору
 Re: Чтение данных из TADOConnection  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7650
Pupkin,
код давай. И ошибку.
10 янв 21, 23:28    [22261222]     Ответить | Цитировать Сообщить модератору
 Re: Чтение данных из TADOConnection  [new]
mayton
Member

Откуда: loopback
Сообщений: 51017
    String ss=cnn->Execute("select value from table where...);

Если-б такой метод существовал - то он был бы плох по дизайну и не отражал бы сути реляционной алгебры.

Потому-что SELECT в общем случае возвращает множество. Или пустоту. Как этот кейс отработать строкой
(скаляром) - непонятно.

Но ты не ленись. Сделай свою волшебную функцию-враппер на основе _Recordset как тебе советовали
выше.

Это и есть подход разработки. Адаптируй инструменты под себя.
11 янв 21, 01:29    [22261252]     Ответить | Цитировать Сообщить модератору
 Re: Чтение данных из TADOConnection  [new]
Pupkin
Member

Откуда:
Сообщений: 120
mayton
... не отражал бы сути реляционной алгебры.
Сделай свою волшебную функцию...
пить меньше надо
11 янв 21, 23:12    [22261752]     Ответить | Цитировать Сообщить модератору
 Re: Чтение данных из TADOConnection  [new]
mayton
Member

Откуда: loopback
Сообщений: 51017
Ну и зачем ты это написал?
11 янв 21, 23:36    [22261759]     Ответить | Цитировать Сообщить модератору
 Re: Чтение данных из TADOConnection  [new]
petrav
Member

Откуда:
Сообщений: 2861
mayton

Потому-что SELECT в общем случае возвращает множество. Или пустоту.

Ну пустое множество — это такое же множество как и все остальные. Кроме бесконечных множеств, но этот случай — не вариант для SQL.
12 янв 21, 00:52    [22261771]     Ответить | Цитировать Сообщить модератору
 Re: Чтение данных из TADOConnection  [new]
mayton
Member

Откуда: loopback
Сообщений: 51017
petrav
mayton

Потому-что SELECT в общем случае возвращает множество. Или пустоту.

Ну пустое множество — это такое же множество как и все остальные. Кроме бесконечных множеств, но этот случай — не вариант для SQL.

Я могу написать табличную функцию которая возвращает бесконечное множество.
12 янв 21, 00:59    [22261772]     Ответить | Цитировать Сообщить модератору
 Re: Чтение данных из TADOConnection  [new]
Pupkin
Member

Откуда:
Сообщений: 120
mayton
Ну и зачем ты это написал?
совет после рекомендации об волшебстве
Я могу написать табличную функцию
волшебную?
и еще
задан очень конкретный вопрос выше. Лень переписывать.
Ответ на него (предположительно) займёт одну, две-три строки.
Пожалуйста, ответьте по теме, если владете
12 янв 21, 08:17    [22261816]     Ответить | Цитировать Сообщить модератору
 Re: Чтение данных из TADOConnection  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7650
Pupkin,
В данной ветке дают удочку чтобы вы могли ловить рыбу. А не саму рыбу.
Саму рыбу в ветке работа.
12 янв 21, 10:10    [22261846]     Ответить | Цитировать Сообщить модератору
 Re: Чтение данных из TADOConnection  [new]
mayton
Member

Откуда: loopback
Сообщений: 51017
Pupkin,

Я иногда - метафоричен. А грубить не надо. Это в правилах форума есть.
12 янв 21, 11:07    [22261868]     Ответить | Цитировать Сообщить модератору
 Re: Чтение данных из TADOConnection  [new]
White Owl
Member

Откуда:
Сообщений: 12682
Pupkin
задан очень конкретный вопрос выше. Лень переписывать.
Ответ на него (предположительно) займёт одну, две-три строки.
Пожалуйста, ответьте по теме, если владете
Нет. Ответ на него займет несколько глав документации.

Тебе уже дали подсказку: _Recordset. В документации на TADO явно сказано что _Recordset это полный враппер на ADO Recordset.
http://docwiki.embarcadero.com/Libraries/Sydney/en/Data.Win.ADODB._Recordset
Задаешь это гуглу и получаешь https://docs.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/recordset-object-ado

Дальше по ссылкам и меню, сможешь найти примеры работы с рекордсетами. Или возьми любую книжку по базам данных и почитай что такое рекордсеты и с чем их едят. Это краеугольный камень для всех баз данных, они есть всегда и везде. И эту тему надо понять в обязательном порядке. Причем не важно ADO это, или какой-другой интерфейс.
Результат запроса на выборку это всегда рекордсет. В разных инетерфейсах конечно могут возвращаться и числа и строки, но только как результат "выполнили запрос или упали с ошибкой". Данные всегда будут в рекордсете. ADO тут, кстати, уникален - оно напрямую возвращает рекордсет, а не "прячет" его в хендлах, окружении или вообще в глобальных синглтонах.
12 янв 21, 18:34    [22262160]     Ответить | Цитировать Сообщить модератору
Все форумы / C++ Ответить