Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT] Базы данных, MVC 
:(
    Опции темы
CuteBunny
Дата 14.2.2008, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 14.2.2008

Репутация: 1
Всего: 1



Hello, world! Есть две таблицы. Таблицы связаны - в второй имеется поле, которое связано с ключевым полем первой. 
На ui одна таблица находится под другой . При навигации по записям в первой таблице, во второй отображаются записи, связанные только с текущей записей первой таблицы, если проще то, "select * from table2 where id="+table1Query.value(0).toString(), думаю всем итак понятно, что к чему. Для первой таблицы я написал свою модель, унаследованную от QSqlTableModel, там все нормально, никаких проблем нет. Хочу теперь написать модель на основе QSqlRelationalTableModel, для второй таблицы. Вопрос, как мне эти две модели связать между собой??? И можно ли так в обще сделать?
PM MAIL   Вверх
JackYF
Дата 15.2.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 7
Всего: 162



Цитата(CuteBunny @  14.2.2008,  14:40 Найти цитируемый пост)
Вопрос, как мне эти две модели связать между собой??? И можно ли так в обще сделать? 

Вот тут подробнее.

Цитата(CuteBunny @  14.2.2008,  14:40 Найти цитируемый пост)
Вопрос, как мне эти две модели связать между собой???

наверное, сделай свою модель, которая будет вмещать две эти + связи между ними.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
CuteBunny
Дата 22.2.2008, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 14.2.2008

Репутация: 1
Всего: 1



По подробнее - это создать отношение между таблицами типа 1:М. Вроде, теперь перешел на mysql, там уже вроде таблицы можно создавать с внешними ключами и проблемы решаться, сейчас, новая блин проблема, причем тоже часто встречается в нете, но никто не дает четкого ответа, проблема с кодировкой, делаю запрос на вставку записи в бд (в самом мускуле везде, где только нужно установил кодировку cp1251), отображаются ??????? - ки, и кодек на tr и locale и CString устанавливал, не помогает. Говорят, это можно решить переводом на utf8 - не знаю с чего начать? 
PM MAIL   Вверх
SABROG
Дата 22.2.2008, 13:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Начни с перевода базы данных на utf-8 вместо cp1251. Откуда вставляется русский текст из GUI или из исходников ? Это принципиально, т.к. если из GUI, то русский текст представляется в UTF-8 кодировке, если из исходников (напр. sqlquery.exec("INSERT INTO tbl (msg) values ('привет мир');"), то в cp1251. А в этом случае надо преобразовать кодировку в Utf-8. Сделать это можно командой QString::fromLocal8Bit, которая определяет кодировку локали (cp1251 по умолчанию для винды) и преобразует в Unicode.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
CuteBunny
Дата 23.2.2008, 07:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 14.2.2008

Репутация: 1
Всего: 1



clientsQuery.prepare("insert into clients("
        "fio, ps, pn, address, phone) "
        "values("
        ":fio, :ps, :pn, :address, :phone)");
    clientsQuery.bindValue(0, ui.lineEditFIO->text().toLocal8Bit()); //попробовал через Local8Bit(), бд пока не перевел в utf8 - результат вместо ???? - àààààà
    clientsQuery.bindValue(1, ui.lineEditPS->text());
    clientsQuery.bindValue(2, ui.lineEditPN->text());
    clientsQuery.bindValue(3, ui.lineEditAddress->text());
    clientsQuery.bindValue(4, ui.lineEditPhone->text());
    clientsQuery.exec();

Добавлено через 12 минут и 57 секунд
Qt4.3.1+VisualCppEE+MySql4.1.22, поменял my.cnf 

в следующих местах

[client]
#password    = my_password
port        = 3306
socket        = /tmp/mysql.sock            
character-sets-dir = C:/MySQL/share/charsets/
default-character-set = utf8

[mysqld]
character-sets-dir = C:/MySQL/share/charsets/
default-character-set = utf8
port        = 3306
socket        = /tmp/mysql.sock        
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
skip-character-set-client-handshake


[mysql]
no-auto-rehash
default-character-set = utf8

        clientsQuery.prepare("insert into clients("
        "fio, ps, pn, address, phone) "
        "values("
        ":fio, :ps, :pn, :address, :phone)");
    clientsQuery.bindValue(0, ui.lineEditFIO->text().toUtf8()); //попробовал таким образом, результат еще хуже - вававвава
    clientsQuery.bindValue(1, ui.lineEditPS->text());
    clientsQuery.bindValue(2, ui.lineEditPN->text());
    clientsQuery.bindValue(3, ui.lineEditAddress->text());
    clientsQuery.bindValue(4, ui.lineEditPhone->text());
    clientsQuery.exec();



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0781 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.