Название: Привязка полей результата по именам Отправлено: CBapor от Январь 12, 2005, 10:28 С удивлением обнаружил отсутствие привязки полей результата селекта по именам полей в QSqlQuery.
В наличие доступ только по номеру поля с помощью QVariant QSqlQuery::value ( int i ) const [virtual] И что действительно нет никакой возможности по имени поля узнать его порядковый номер? (Конечно такая возможность присутствует в QSqlCursor но это же для конкретных view , насколько я понимаю) Название: Re: Привязка полей результата по именам Отправлено: Admin от Январь 12, 2005, 11:04 Цитата: "CBapor" С удивлением обнаружил отсутствие привязки полей результата селекта по именам полей в QSqlQuery. 2 ситуации: 1) делаем select * from table получаем все поля таблицы, и работаем с ними. кк я понял, это твоя ситуация 2) делаем select field1,field2 from table порядок полей определяешь ты. Значит потом название полей тебе знать не надо. Я пользуюсь всегда этим способом. Первый подход хорош тем, что писанины меньше. Но ты завись, от структуры базы, если в базу добавляется еще одно поле в середину, ты переписываешь свою программу. Так что знать порядковый номер, как мне кажентся нафиг не надо Название: Re: Привязка полей результата по именам Отправлено: CBapor от Январь 12, 2005, 11:31 Цитата: "Admin" 1) делаем select * from table получаем все поля таблицы, и работаем с ними. кк я понял, это твоя ситуация 2) делаем select field1,field2 from table порядок полей определяешь ты. Значит потом название полей тебе знать не надо. Я пользуюсь всегда этим способом. Первый подход хорош тем, что писанины меньше. Но ты завись, от структуры базы, если в базу добавляется еще одно поле в середину, ты переписываешь свою программу. Так что знать порядковый номер, как мне кажентся нафиг не надо 3) SQL-запрос вводится в текстовом поле Мы должны определить количество и имена полей и отобразить их в виде таблички :) Ну а более серьезный случай - 4) результат нам возвращает процедура и порядок полей определяется разработчиком серверной части. Договариваться об именах полей гораздо удобнее и надежнее, чем об их порядке. Так что отсутствие такой возможности я бы все-таки отнес к недостаткам Qt. В ассисте я прочел, что отсутствие привязки по имени сделано ради производительности, но ИМХО это не выдерживает критики. Ведь привязку имен к порядковым номерам можно сделать перед фетчем один раз. а потом фетчь себе и фетчь. Название: Привязка полей результата по именам Отправлено: Admin от Январь 12, 2005, 11:53 Я третий случай вообще не понял
это как в текстовом поле? а насчет 4 случаю может быть сделать тогда навесочек получить структуру таблицы (кажется есть такая SQL команда) а дальше фетчить и фетчить :) Цитировать результат нам возвращает процедура и порядок полей определяется разработчиком серверной части а на счет этого у меня на php процедура возвращает что то типа array("filed1_name" -> field1_value,"filed2_name" -> field2_value) может и вам так договорится возращать асациативный массив Название: Привязка полей результата по именам Отправлено: CBapor от Январь 13, 2005, 10:47 Цитата: "Admin" Я третий случай вообще не понял это как в текстовом поле? Это я для изучения qt решил написать небольшую прогу состоящую из виджета TextEdit, в котором вводится произвольный sql-запрос, и виджета Table, в котором выводим результат. И вот обломс :) Цитировать а насчет 4 случаю может быть сделать тогда навесочек получить структуру таблицы (кажется есть такая SQL команда) а дальше фетчить и фетчить :) Ну это же обходные маневры. Я же просто пока изучаю qt, а не решаю конкретную прикладную задачу, поэтому обходные маневры не связанные с qt меня не интересуют, но за советы все равно спасибо :). Вот QSQLCursor умеет по имени поля результат возвращать. Значить в принципе qt может это делать. Где-то в глубине зарыта подходящая функцийка!? Кто-нибуть копал в этом направлении? Название: Привязка полей результата по именам Отправлено: Admin от Январь 13, 2005, 11:02 Я не большой знако баз данных
но курсор как я помню что то типа временной виртуально таблицы, созданной из многих других таблиц так что там это может быть. Название: Привязка полей результата по именам Отправлено: CBapor от Январь 13, 2005, 11:16 Цитата: "Admin" но курсор как я помню что то типа временной виртуально таблицы, созданной из многих других таблиц так что там это может быть. Имеешь ввиду серверные курсоры? ИМХО QSQLCursor к ним отношения не имеет, насколько я понял. А вот работа с серверными курсорами это вопрос интересный. Есть ли QT-шные классы для работы с курсорами Oracle? Название: Привязка полей результата по именам Отправлено: Admin от Январь 13, 2005, 11:46 все я тут пас
что такое серверные курсоры я уже не знаю и чем они от обчных курсоров отличаются тоже не знаю Название: Привязка полей результата по именам Отправлено: CBapor от Январь 14, 2005, 09:41 Цитата: "Admin" все я тут пас что такое серверные курсоры я уже не знаю и чем они от обчных курсоров отличаются тоже не знаю Гм.. что ты подразумеваешь под обычными курсорами? Название: Привязка полей результата по именам Отправлено: Admin от Январь 14, 2005, 10:20 то что я выше написал :)
Название: Привязка полей результата по именам Отправлено: CBapor от Январь 17, 2005, 08:43 Цитата: "Admin" то что я выше написал :) Ну описание похоже как раз на серверный курсор, а пишешь, что не знаешь что это такое. :) Фишка в том, что серверные процедуры оракла не умеют возвращать resultset (как , например в MSSQL или SyBase), но зато умеют возвращать курсор, т.е. некую структуру данных, которую можно профетчить и, кроме того, передавать как обычный параметр как в\из серверную процедуру, так и возвращать курсор как результат функции. Наверное стоит создать отдельную тему, а то тут может потеряться вопрос. |