crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> Qt, Interbase и ODBC, работа с БД Interbase
Litkevich Yuriy
  опции профиля:
сообщение 11.1.2008, 13:00
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


У меня на виндовозе стоит ОпенСорсовская версия Qt4, собраная по умолчанию, есть прога которую я делал в Borland C++Builder 5 и использующая БД Interbase.
На другой машине стоит Firebird-2.0.1.12855 и Борлондовская прога свободно там работает, этот же результат хочу получить на Qt'ях.

Вопрос такой, как лучше прицепиться к этой БД с помощью Qt и возможно ли это для ОпенСорсовской версии Qt4?
Есть ли в ОпенСорсовской версии нужные штуки?
И еще некоторые люди рекомендуют использовать унифицированный механизм под названием ODBC.

А примеры как-то все заточены под MySQL.

Собственно вопросу не удивляйтесь, я не програмер, а разработчик РЭА и с БД месяца 3 как познакомился.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 11.1.2008, 13:12
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Litkevich Yuriy @ 11.1.2008, 13:00) *
Вопрос такой, как лучше прицепиться к этой БД с помощью Qt и возможно ли это для ОпенСорсовской версии Qt4?
Есть ли в ОпенСорсовской версии нужные штуки?
Так как ты поставил версию Qt по умолчанию, то тебе прийдется накатить плагин для ODBC, читай: Как собрать ODBC плагин под Windows
В опенсурсе полный набор, так что не беспокойся... :)

Цитата(Litkevich Yuriy @ 11.1.2008, 13:00) *
А примеры как-то все заточены под MySQL.

В Qt работа c QMYSQL и QODBC различается только:
QSqlDatabase::addDatabase("QMYSQL"); // Для MySql
QSqlDatabase::addDatabase("QODBC"); // Для ODBC

Остальное все одинаково. :)


Но так как у тебя стоит InterBase с помощью Qt можно и для него плагин накатить: Как собрать QIBASE плагин под Windows. :)
В принципе я бы именно этот способ тебе и рекомендовал, но решать тебе.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.1.2008, 13:45
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


А чем отличается плагин от просто библиотеки?

У меня была такая мысль:
скомандовать:

mingw32-make.exe confclean
configure.exe -platform win32-g++ -qt-sql-odbc
mingw32-make.exe


чтобы вернуть в иходное состояние и собрать по новой, только незнал прокатит с ODBC или нет.
Да и потом уменя на машине (с MinGW) Qt'я собирается примерно 2,5 часа :(, долго.

А вот по поводу плагина, какие достоинства и не достатки его применения перед моим вариантом. Это просто быстрее или я при этом что-то теряю?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
balbes
  опции профиля:
сообщение 11.1.2008, 13:57
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 62
Регистрация: 11.10.2007
Пользователь №: 10

Спасибо сказали: 0 раз(а)




Репутация:   0  


При указании поддержки того же ODBC в configure и его сборки ODBC статически "привязывается" к Qt, а при сборке в качестве плагина динамически, и не "привязывется" к Qt, что быстрей и легче.

Других различий не знаю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.1.2008, 14:12
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Несколько не догнал, что значит привязывается?
когда я скомпилю свою прогу, и потащу с ней зарание определенные Qt'явые dll'ки на другую машину, в этом случае в зависимости от того как я собирал, надо будет поступать по разному?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 11.1.2008, 14:14
Сообщение #6


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Litkevich Yuriy @ 11.1.2008, 14:12) *
Несколько не догнал, что значит привязывается?
По всей видимости имелось ввиду, что собирается как часть Qt библиотеки, а не как дополнение.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.3.2008, 13:25
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


...продолжаю, использую ODBC для соединения с IntrBase через драйвер Firebird_ODBC_1.2.0.69-Win32.exe
Немогу побороть проблему:
База содержит руский текст в кодировке Win1251
В "Источнике данных ODBC" если выставляю такую же кодировку, то в своей тестовой проге таблицы содержащие русские символы пустые, видны только шапки столбцов, если ставлю NONE, то вижу квадратики вместо русских символов, как можно поборотся?
может кто сталкивался?

Сообщение отредактировал Litkevich Yuriy - 12.3.2008, 13:25
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.3.2008, 13:59
Сообщение #8


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Ну так в Qt по умолчанию используется Unicode, попробуй перевести в 1251 и заживешь... :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.3.2008, 14:00
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


если в функции main пишу так:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));

то все отображается коректно, а как-нибудь можно задать кодек только для конкретного класса, т.е. чтобы основной был другим.
собственно используется связка QSqlTableModel и QTableView, хочу чтобы толко для них или одного из них, даже незнаю кому именно, устанавливался индивидуальный кодек, можно ли так сделать?

Сообщение отредактировал Litkevich Yuriy - 12.3.2008, 14:09
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.3.2008, 14:21
Сообщение #10


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


По всей видимости без переопределения класса QTextCodec нет, так как setCodecForCStrings статическая функция и использует статическую переменную. :)

Не понятно, зачем тебе в одном месте использовать 1251, а в другом Unicode? :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V   1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


9 чел. читают эту тему (гостей: 9, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 10.12.2024, 7:37