Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / C++ |
![]() ![]() |
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] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Pupkin Member Откуда: Сообщений: 120 |
String s=cnn->Execute ... , а я её обдумаю по вашей замечательной ссылке Сообщение было отредактировано: 11 янв 21, 01:16 |
||||||||
10 янв 21, 00:02 [22260864] Ответить | Цитировать Сообщить модератору |
White Owl Member Откуда: Сообщений: 12682 |
_Recordset rs = cnn->Execute("select value from table where...);
А потом в цикле идешь по rs и читаешь его строки. Сообщение было отредактировано: 11 янв 21, 01:15 |
10 янв 21, 00:45 [22260871] Ответить | Цитировать Сообщить модератору |
Pupkin Member Откуда: Сообщений: 120 |
rs->RecordCount возвращает единицу и это правильно (соответствует моему в where) далее rs->FieldByName ... не катит rs->Fields ... не катит В каком свойстве RS сидит возвращаемое значение? |
||
10 янв 21, 17:53 [22261149] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Pupkin, код давай. И ошибку. |
10 янв 21, 23:28 [22261222] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Если-б такой метод существовал - то он был бы плох по дизайну и не отражал бы сути реляционной алгебры. Потому-что SELECT в общем случае возвращает множество. Или пустоту. Как этот кейс отработать строкой (скаляром) - непонятно. Но ты не ленись. Сделай свою волшебную функцию-враппер на основе _Recordset как тебе советовали выше. Это и есть подход разработки. Адаптируй инструменты под себя. |
||
11 янв 21, 01:29 [22261252] Ответить | Цитировать Сообщить модератору |
Pupkin Member Откуда: Сообщений: 120 |
|
||
11 янв 21, 23:12 [22261752] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Ну и зачем ты это написал? |
11 янв 21, 23:36 [22261759] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Ну пустое множество — это такое же множество как и все остальные. Кроме бесконечных множеств, но этот случай — не вариант для SQL. |
||||
12 янв 21, 00:52 [22261771] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Я могу написать табличную функцию которая возвращает бесконечное множество. |
||||||||
12 янв 21, 00:59 [22261772] Ответить | Цитировать Сообщить модератору |
Pupkin Member Откуда: Сообщений: 120 |
Ответ на него (предположительно) займёт одну, две-три строки. Пожалуйста, ответьте по теме, если владете |
||||||
12 янв 21, 08:17 [22261816] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Pupkin, В данной ветке дают удочку чтобы вы могли ловить рыбу. А не саму рыбу. Саму рыбу в ветке работа. |
12 янв 21, 10:10 [22261846] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Pupkin, Я иногда - метафоричен. А грубить не надо. Это в правилах форума есть. |
12 янв 21, 11:07 [22261868] Ответить | Цитировать Сообщить модератору |
White Owl Member Откуда: Сообщений: 12682 |
Тебе уже дали подсказку: _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++ | ![]() |