Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder и базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
TheSteelRat
0 / 0 / 1
Регистрация: 25.06.2010
Сообщений: 36
#1

Извлечение данных из БД используя dbexpress - C++ Builder БД

03.07.2010, 11:08. Просмотров 1349. Ответов 7
Метки нет (Все метки)

Доброго времени суток форумчане!
Передо мной стоит задача извлеч данные из таблицы для их использования в коде.
Подключаюсь через dbexpress к mysql. Подключаюсь через TSQLConnection. Всё отлично подключается, через метод TSQLConnection->Execute выполняю запросы к БД.
Но как мне через этот метод TSQLConnection->Execute извлеч данные из БД? Я бы их потом как-то в цикле обошёл и использовал в качестве значений переменных.
http://www.cyberforum.ru/cpp-builder/thread165136.html

Посмотрел справку по билдеру, там есть третий параметр у Execute void * ResultSet , но вот какого конкретного типа болжен быть указатель на void там как-то смутно написано, а тем более как потом из этого всего извлеч данные для пользования, то вообще потёмки...

Надеюсь на вашу помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2010, 11:08
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Извлечение данных из БД используя dbexpress (C++ Builder БД):

Извлечение данных из файла
При добавлении в базу данных информации, и при нажатии затем на кнопку вывода...

InterBase извлечение данных
Здравствуйте. Делаю небольшой клиент для работы с InterBase на си билдере....

Извлечение данных из внешнего приложения
как в мою программу можно копировать данные из внешней? значение нужно извлечь...

С++ Builder (dbExpress) + MySQL
Приветствую всех. Нуждаюсь в помощи. Нужна информация\гайды\книги\etc по...

DBExpress+DDL MySQL
Пытаюсь выполнить DDL скрипт создания БД в MySQL через dxExpress, используя...

7
Lord_Voodoo
Супер-модератор
8607 / 2228 / 133
Регистрация: 07.03.2007
Сообщений: 10,802
Завершенные тесты: 1
03.07.2010, 11:53 #2
а чего бы не использовать к примеру TSQLTable или TSQLQuery, тогда работать можно по аналогии с TTable или TQuery, а еще лучше юзать компоненты, которые строго заточены под конкретную базу, гораздо удобнее и гибче это все будет
0
TheSteelRat
0 / 0 / 1
Регистрация: 25.06.2010
Сообщений: 36
03.07.2010, 12:06  [ТС] #3
Моему приложению надо выполнять всего 2 действия:
1. Послать запрос к БД, не требующий ответа.
2. Послать запрос к БД, и разобрать по косточкам ответ на этот запрос.

Больше мне ничего не надо. С первым действием легко справляется TSQLConnection->ExecuteDirect(). А со вторым по-идее должно справляться TSQLConnection->Execute(), так как оно получает ответ от БД.
Так зачем мне ещё надо забивать память какими-то дополнительными компонентами, если я буду использовать лишь малую часть их методов?
0
Lord_Voodoo
Супер-модератор
8607 / 2228 / 133
Регистрация: 07.03.2007
Сообщений: 10,802
Завершенные тесты: 1
03.07.2010, 12:56 #4
TheSteelRat, оно конечно вам виднее, как и что делать в своих прогах, я соединение использую только для коннекта к базе, а остальные операции делаю с помощью запроса... прироста к размеру проги будет не такой уж и большой, потому что большинство хидеров у них одинаковые...

вот так работает (Con - TSQLConnection, ds - TSQLDataSet)
C++
1
2
3
4
5
6
  Con->Connected = true;
  AnsiString sql = "select * from tmp";
  int r = Con->Execute(sql, NULL, &ds);
  ds->Open();
  Edit1->Text = ds->FieldByName("NAME")->AsString;
  ds->Close();
1
TheSteelRat
0 / 0 / 1
Регистрация: 25.06.2010
Сообщений: 36
03.07.2010, 13:28  [ТС] #5
Вот это мне как раз и надо было . Большое спасибо. Только вот у меня в результате int r == 0 всегда... Это походу типа сколько изменено было записей. А вот ExecuteDirect показывает именно кол-во записей при Select запросе. Так что я юзаю ds->RecordCount, он показывает кол-во содержащихся в нем записей.
0
Lord_Voodoo
Супер-модератор
8607 / 2228 / 133
Регистрация: 07.03.2007
Сообщений: 10,802
Завершенные тесты: 1
04.07.2010, 11:23 #6
TheSteelRat, да если честно, я так наобум получил данные и напечатал код, особо с этой технологией не разбирался, хотя хелп пишет, что должна функция возвращать кол-во данных
0
TheSteelRat
0 / 0 / 1
Регистрация: 25.06.2010
Сообщений: 36
04.07.2010, 15:38  [ТС] #7
Lord_Voodoo, ну как бы там типа этого написано, но там написано, что она возвращает кол-во затронутых Записей(records), а метод ExecuteDirect написано что возвращает кол-во затронутых Строк(rows). В итоге получается, что ExecuteDirect мне показывает сколько записей подходит под мои критерии при запросе SELECT, а Execute пишет 0
0
Lord_Voodoo
Супер-модератор
8607 / 2228 / 133
Регистрация: 07.03.2007
Сообщений: 10,802
Завершенные тесты: 1
04.07.2010, 15:56 #8
TheSteelRat, видать execute заточен по запросы, связанные с модификацией базы, если не лень, проверь, что вернет метод на запрос к примеру insert
0
04.07.2010, 15:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2010, 15:56
Привет! Вот еще темы с решениями:

dbExpress подключение в отдельном потоке
Добрый день! Есть dll библиотека, подключающаяся к приложению. Но при...

Соединить приложение с СУБД MySQL через компоненту dbExpress
Хочу соединить некое приложение с СУБД MySQL через компоненту dbExpress. MySQL...

Datasnap Провайдеры DbEXpress - картинки (Blob поле) не пишутся в физическую базу данных
Дорогие друзья, форумчане, уважаемые люди. Прошу помочь разобраться - не...

Извлечение данных с сайта и загрузка этих данных в эксель
Всем доброго суток. Вопрос такого плана. Есть подраздел на сайте. В качестве...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru