Qt, Interbase и ODBC, работа с БД Interbase |
Здравствуйте, гость ( Вход | Регистрация )
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 |
Вопрос такой, как лучше прицепиться к этой БД с помощью Qt и возможно ли это для ОпенСорсовской версии Qt4? Так как ты поставил версию Qt по умолчанию, то тебе прийдется накатить плагин для ODBC, читай: Как собрать ODBC плагин под WindowsЕсть ли в ОпенСорсовской версии нужные штуки? В опенсурсе полный набор, так что не беспокойся... А примеры как-то все заточены под MySQL. В Qt работа c QMYSQL и QODBC различается только:
Остальное все одинаково. Но так как у тебя стоит InterBase с помощью Qt можно и для него плагин накатить: Как собрать QIBASE плагин под Windows. В принципе я бы именно этот способ тебе и рекомендовал, но решать тебе. |
|
|
Litkevich Yuriy |
11.1.2008, 13:45
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
А чем отличается плагин от просто библиотеки?
У меня была такая мысль: скомандовать:
чтобы вернуть в иходное состояние и собрать по новой, только незнал прокатит с 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 |
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? |
|
|
Текстовая версия | Сейчас: 7.12.2024, 20:47 |