Russian Qt Forum
Ноябрь 22, 2024, 23:11
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
>
Привязка полей результата по именам
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Привязка полей результата по именам (Прочитано 11714 раз)
CBapor
Гость
Привязка полей результата по именам
«
:
Январь 12, 2005, 10:28 »
С удивлением обнаружил отсутствие привязки полей результата селекта по именам полей в QSqlQuery.
В наличие доступ только по номеру поля с помощью
QVariant QSqlQuery::value ( int i ) const [virtual]
И что действительно нет никакой возможности по имени поля узнать его порядковый номер?
(Конечно такая возможность присутствует в QSqlCursor но это же для конкретных view , насколько я понимаю)
Записан
Admin
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1988
Re: Привязка полей результата по именам
«
Ответ #1 :
Январь 12, 2005, 11:04 »
Цитата: "CBapor"
С удивлением обнаружил отсутствие привязки полей результата селекта по именам полей в QSqlQuery.
2 ситуации:
1) делаем select * from table
получаем все поля таблицы, и работаем с ними. кк я понял, это твоя ситуация
2) делаем select field1,field2 from table
порядок полей определяешь ты. Значит потом название полей тебе знать не надо. Я пользуюсь всегда этим способом.
Первый подход хорош тем, что писанины меньше. Но ты завись, от структуры базы, если в базу добавляется еще одно поле в середину, ты переписываешь свою программу.
Так что знать порядковый номер, как мне кажентся нафиг не надо
Записан
CBapor
Гость
Re: Привязка полей результата по именам
«
Ответ #2 :
Январь 12, 2005, 11:31 »
Цитата: "Admin"
1) делаем select * from table
получаем все поля таблицы, и работаем с ними. кк я понял, это твоя ситуация
2) делаем select field1,field2 from table
порядок полей определяешь ты. Значит потом название полей тебе знать не надо. Я пользуюсь всегда этим способом.
Первый подход хорош тем, что писанины меньше. Но ты завись, от структуры базы, если в базу добавляется еще одно поле в середину, ты переписываешь свою программу.
Так что знать порядковый номер, как мне кажентся нафиг не надо
3) SQL-запрос вводится в текстовом поле
Мы должны определить количество и имена полей и отобразить их в виде таблички
Ну а более серьезный случай -
4) результат нам возвращает процедура и порядок полей определяется разработчиком серверной части.
Договариваться об именах полей гораздо удобнее и надежнее, чем об их порядке.
Так что отсутствие такой возможности я бы все-таки отнес к недостаткам Qt.
В ассисте я прочел, что отсутствие привязки по имени сделано ради производительности, но ИМХО это не выдерживает критики. Ведь привязку имен к порядковым номерам можно сделать перед фетчем один раз. а потом фетчь себе и фетчь.
Записан
Admin
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1988
Привязка полей результата по именам
«
Ответ #3 :
Январь 12, 2005, 11:53 »
Я третий случай вообще не понял
это как в текстовом поле?
а насчет 4 случаю
может быть сделать тогда навесочек
получить структуру таблицы (кажется есть такая SQL команда)
а дальше фетчить и фетчить
Цитировать
результат нам возвращает процедура и порядок полей определяется разработчиком серверной части
а на счет этого у меня на php процедура возвращает что то типа
array("filed1_name" -> field1_value,"filed2_name" -> field2_value)
может и вам так договорится возращать асациативный массив
Записан
CBapor
Гость
Привязка полей результата по именам
«
Ответ #4 :
Январь 13, 2005, 10:47 »
Цитата: "Admin"
Я третий случай вообще не понял
это как в текстовом поле?
Это я для изучения qt решил написать небольшую прогу состоящую из виджета TextEdit, в котором вводится произвольный sql-запрос, и виджета Table, в котором выводим результат.
И вот обломс
Цитировать
а насчет 4 случаю
может быть сделать тогда навесочек
получить структуру таблицы (кажется есть такая SQL команда)
а дальше фетчить и фетчить
Ну это же обходные маневры. Я же просто пока изучаю qt, а не решаю конкретную прикладную задачу, поэтому обходные маневры не связанные с qt меня не интересуют, но за советы все равно спасибо
.
Вот QSQLCursor умеет по имени поля результат возвращать. Значить в принципе qt может это делать. Где-то в глубине зарыта подходящая функцийка!?
Кто-нибуть копал в этом направлении?
Записан
Admin
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1988
Привязка полей результата по именам
«
Ответ #5 :
Январь 13, 2005, 11:02 »
Я не большой знако баз данных
но курсор как я помню что то типа временной виртуально таблицы,
созданной из многих других таблиц
так что там это может быть.
Записан
CBapor
Гость
Привязка полей результата по именам
«
Ответ #6 :
Январь 13, 2005, 11:16 »
Цитата: "Admin"
но курсор как я помню что то типа временной виртуально таблицы,
созданной из многих других таблиц
так что там это может быть.
Имеешь ввиду серверные курсоры? ИМХО QSQLCursor к ним отношения не имеет, насколько я понял.
А вот работа с серверными курсорами это вопрос интересный.
Есть ли QT-шные классы для работы с курсорами Oracle?
Записан
Admin
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1988
Привязка полей результата по именам
«
Ответ #7 :
Январь 13, 2005, 11:46 »
все я тут пас
что такое серверные курсоры я уже не знаю
и чем они от обчных курсоров отличаются тоже не знаю
Записан
CBapor
Гость
Привязка полей результата по именам
«
Ответ #8 :
Январь 14, 2005, 09:41 »
Цитата: "Admin"
все я тут пас
что такое серверные курсоры я уже не знаю
и чем они от обчных курсоров отличаются тоже не знаю
Гм.. что ты подразумеваешь под обычными курсорами?
Записан
Admin
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1988
Привязка полей результата по именам
«
Ответ #9 :
Январь 14, 2005, 10:20 »
то что я выше написал
Записан
CBapor
Гость
Привязка полей результата по именам
«
Ответ #10 :
Январь 17, 2005, 08:43 »
Цитата: "Admin"
то что я выше написал
Ну описание похоже как раз на серверный курсор, а пишешь, что не знаешь что это такое.
Фишка в том, что серверные процедуры оракла не умеют возвращать resultset (как , например в MSSQL или SyBase), но зато умеют возвращать курсор, т.е. некую структуру данных, которую можно профетчить и, кроме того, передавать как обычный параметр как в\из серверную процедуру, так и возвращать курсор как результат функции.
Наверное стоит создать отдельную тему, а то тут может потеряться вопрос.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...