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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Одновременное подключение  (Прочитано 5576 раз)
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« : Апрель 05, 2009, 23:19 »

Необходимо перегнать с некоторым преобразованием данные из БД PARADOX в БД PostgreSQL.
Подключаюсь к Paradox через QODBC3, а к PostgreSQL через QPSQL7.
Программа валится после установления связи с БД и попытки прочитать и записать.
WinXP, QT3.3.8, PostgreSQL 8.1.

Такая работа с БД допустима?
Записан

Как мало времени и как много нужно узнать
UVV
Гость
« Ответ #1 : Апрель 06, 2009, 04:24 »

Программа валится после установления связи с БД и попытки прочитать и записать.
Это конечно всё объясняет, но всё-таки хотелось бы увидеть код...
Записан
BaltikS
Гость
« Ответ #2 : Апрель 06, 2009, 06:44 »

Приходилось проделывать аналогичные действие, всё перегонялось и ничего не падало... Правда Qt был 3.3.6... но советую лучше экспортировать в скрипт, а потом этот скрипт импортировать, будет просто намного быстрее....Улыбающийся
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #3 : Апрель 06, 2009, 08:18 »

Программа валится после установления связи с БД и попытки прочитать и записать.
Это конечно всё объясняет, но всё-таки хотелось бы увидеть код...

Код
C++ (Qt)
QSqlDatabase* MyPRDX = QSqlDatabase::addDatabase("QODBC3");
QSqlDatabase* MyPSQL = QSqlDatabase::addDatabase("QPSQL7");
 
// подключение проходит успешно
// но потом
QSqlQuery sql(MyPRDX);
sql.exec("SELECT * FROM test");
while(sql.next())
{
QSqlCursor sCur("test",true,MyPSQL);
QSqlQuery sc(MyPSQL);  // index
QSqlRecord *buffer = sCur.primeInsert();  // запись для вставки
sc.exec("select nextval('_test')");
sc.next();
buffer->setValue("ind",sc.value(0).toInt());
buffer->setValue("name_",sql.value(0).toString());
buffer->setValue("types",sql.value(1).toInt());
buffer->setValue("numb",sql.value(3).toInt());
i=sCur.insert();
if (i==0) // если не получилось
{
}
}
// получаю исключение типа

Unhandled exception at 0x39d81467 in imp_prdx.exe: 0xC0000005: Access violation reading location 0xabababb7.
« Последнее редактирование: Апрель 06, 2009, 09:59 от pastor » Записан

Как мало времени и как много нужно узнать
crossly
Гость
« Ответ #4 : Апрель 06, 2009, 09:56 »

а мот дать соединениям по имени...??
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Апрель 06, 2009, 10:12 »

я с тройкой не работал, но если считать, что в ней как и в 4-ке, то:
QSqlDatabase::addDatabase("QODBC3"); // добавили соединение с одним драйвером
QSqlDatabase::addDatabase("QPSQL7"); // прибили предыдущее и создали на его месте новое.
Записан

Юра.
BaltikS
Гость
« Ответ #6 : Апрель 06, 2009, 11:29 »

+1 нет псевдонима
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #7 : Апрель 06, 2009, 14:58 »

Да уж,лопухнулся, все ясно, большое спасибо... Смеющийся
Записан

Как мало времени и как много нужно узнать
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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