crossplatform.ru

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


  Ответ в Qt, Interbase и ODBC
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 13.3.2008, 21:52
  у меня одновременно незахотели собираться
-plugin-sql-odbc
-plugin-sql-ibase
только когда один из них, может конечно я чего нетак делал, но пока не до этого, сейчас Borland C++ Builder 5 рулит ;)
Tonal Дата 13.3.2008, 21:18
 
Цитата(Litkevich Yuriy @ 13.3.2008, 15:18) *
Цитата(Tonal @ 13.3.2008, 11:49) *
1) Какую кодировку ты указываешь при подключении к базе?

в "Источнике данных ODBC" указавал родную для БД, Unicod'ы разные и NONE

Тут я не в курсях - только игрался.

Цитата(Litkevich Yuriy @ 13.3.2008, 15:18) *
Цитата(Tonal @ 13.3.2008, 11:49) *
2) Почему не использовать штатный драйвер Firebird/InterBase из поставки Qt Open Source?

во-вторых, есть подозрение, что драйвер ODBC не совместим с драйвером ibase,
первый отменяет определения типов заданных ibase'ом (пошерстил немного исходники)

Что значит "не совместим"?
У меня Qt собрана с -plugin-sql-ibase -plugin-sql-mysql -plugin-sql-odbc -plugin-sql-sqlite (раньше ещё pg-собирал). Только что, в демосе sqlbrowser подключил их все.
Что я не так делаю?

Драйвер ibase работает со всеми версиями Interbase/Firebird.
Litkevich Yuriy Дата 13.3.2008, 14:50
  Вобщем порыскав по инету, пришел к следующему выводу:
Надо дать Qt'ям в Юникоде, как-то это можно сделать в самой БД, а настройки ODBC, Qt'я говорят в гробу видела, т.е. одни ест другие нет и это вроде как честно с точки зрения Юникодовского приложения, так как не оно должно заниматься перекодировками.

Плохо то, что БД разные, и видимо средствами ODBC нельзя унифицировано указать БД в какой кодировке она должна работать с внешним миром. Прийдется индивидуально задавать.
С Paradox'ом просто - русские символы понимает сходу, ну и две другие базы родственные должно катить:
SET NAMES [charset];

попробую так.
Litkevich Yuriy Дата 13.3.2008, 12:18
 
Цитата(Tonal @ 13.3.2008, 11:49) *
1) Какую кодировку ты указываешь при подключении к базе?

в "Источнике данных ODBC" указавал родную для БД, Unicod'ы разные и NONE
Цитата(Tonal @ 13.3.2008, 11:49) *
2) Почему не использовать штатный драйвер Firebird/InterBase из поставки Qt Open Source?

во-первых, читай предыдущие посты о применямых БД,
во-вторых, есть подозрение, что драйвер ODBC не совместим с драйвером ibase,
первый отменяет определения типов заданных ibase'ом (пошерстил немного исходники)
Tonal Дата 13.3.2008, 8:49
  Два вопроса:
1) Какую кодировку ты указываешь при подключении к базе?
Я бы использовал для Firebird UTF8, для InterBase UNICODE_FSS.
2) Почему не использовать штатный драйвер Firebird/InterBase из поставки Qt Open Source?
Litkevich Yuriy Дата 12.3.2008, 16:29
  приведенные выше строки определены в функции main, буквально так:
int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); //UTF-8Windows-1251
  QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));
...
}

на буржуйских форумах люди тоже с этим парятся, тем кому надо кодировку БД отличную от основной, в коде делают селекты руками прекодируют зарание инициализированными кодеками, при вставке и обновлении процесс тот-же только в обратную сторону, а это ЗАД, неужели это единственный способ?
:wacko:
ViGOur Дата 12.3.2008, 16:21
  А ты когда устанавливаешь кодек, до чтения строк из БД или после?
Просто нужно устанавливать до чтения в ту кодировку, а которой находится БД.
Litkevich Yuriy Дата 12.3.2008, 16:02
  блин, все облазил, попробывал так:
  QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); //UTF-8Windows-1251
  QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));

думал раз уж в ODBC менеджере я указваю кодировку, то манеджер будет из нее в локальную конвертировать, а локальную я в программе указал.
фигушки не работает, тогда не понимаю как вообще это в Qt'ях работает, гдето упоминалось, что поумолчанию при работе с БД тип данных Qstring используется, наверное это мешает.

И непойму почему в Qt'ях непредусмотренно задание кодировки БД. :(
(в борланде индивидуально для каждого псевдонима можно кодировку выбрать)
ViGOur Дата 12.3.2008, 15:32
 
Цитата(Litkevich Yuriy @ 12.3.2008, 15:00) *
DOS-rus(Paradox), WIN1251 (IntrBase 5.x), UTF-8 (Firebird 2.x)
Однако! :)

Тады нужно искать, как такое сделать, я пока даже и не знаю.
Litkevich Yuriy Дата 12.3.2008, 15:00
  не получится, у меня три БД и все с разными кодировками DOS-rus(Paradox), WIN1251 (IntrBase 5.x), UTF-8 (Firebird 2.x), из первых двух данные собираются, + данные через COM-порт с девайсов и в третью кладутся
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.4.2024, 2:53