Russian Qt Forum
Ноябрь 23, 2024, 20:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с QSqlTableView и QOCI  (Прочитано 8132 раз)
vinnie
Гость
« : Сентябрь 10, 2008, 11:45 »

Доброго всем времени суток!
Ситуация такая: коннекчусь к Oracle 10.2, Qt 4.4 через OCI
Выполняю такой вот код...
Код:
	sqlTableModel = new QSqlTableModel(this, db);
sqlTableModel->setTable("USER.TABLE");
sqlTableModel->select() ;
sqlTableModel->setEditStrategy(QSqlTableModel::OnFieldChange);
tableView->setModel(sqlTableModel);
tableView->show();
... и получаю table or view doesn't exists
А если соединиться как USER и выполнить тоже самое, только
Код:
	sqlTableModel->setTable("TABLE");
то все замечательно пашет.
Через QODBC все работает как часы, только медленно Грустный
Кто-нить сталкивался?
Записан
nanit
Гость
« Ответ #1 : Сентябрь 11, 2008, 21:00 »

А у пользователя, под которым изначально подключаешся, есть какие-нибудь права (хотя бы SELECT) на таблицу TABLE в схеме пользователя USER?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Сентябрь 11, 2008, 21:02 »

А может кутя такую конструкцию как "USER.TABLE" не понимает?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
nanit
Гость
« Ответ #3 : Сентябрь 11, 2008, 21:23 »

Вряд ли. Qt вроде просто собирает SQL запрос в виде строки и выполняет его через QSqlQuery.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Сентябрь 11, 2008, 21:29 »

Завпрос выполняется через кутевый драйвер. Попробуй соединиться через /demos/sqlbrowser.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
nanit
Гость
« Ответ #5 : Сентябрь 11, 2008, 21:38 »

Попробовал. Запрос "SELECT * FROM TECH.USER_LIST" от пользователя TEST, имеющего права доступа к таблице USER_LIST в схеме TECH выполнился нормально, а запрос "SELECT * FROM SYS.DBA_DATA_FILES", куда у пользователя TEST нет доступа, закончился ошибкой "ORA-00942: таблица или представление пользователя не существует".
Записан
vinnie
Гость
« Ответ #6 : Сентябрь 12, 2008, 14:16 »

Права на SELECT есть. Более того, данные отображаются, если соединяться посредством ODBC. То есть, код тот же, меняешь "QOCI" на "QODBC" и все гут. Попробовал SQLBrowser из qtdemo как советовали, вот что получилось: при выборе таблицы другой схемы из дерева справа и двойном клике мыши получаю список столбцов таблицы и ошибку ORA-00942 (все как у меня), при вводе текста запроса в поле внизу
Код:
SELECT * FROM USER.TABLE
получаю данные из таблицы. Получается, QSqlQuery нормально отрабатывает, а связка QSqlTableModel/QOCI глючит?  Шокированный Непаняаатно (с)
Записан
ритт
Гость
« Ответ #7 : Сентябрь 12, 2008, 14:22 »

попроуй собрать модель скл с -DQT_DEBUG_SQL - все запросы будут отправляться в дэбаг и сможешь сравнить запросы от квери и от тэйблмодели.
что ещё подсказать не знаю...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.14 секунд. Запросов: 23.