Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Быстрое сохранение таблицы в базу данных
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Разработка баз данных
ruzik
Здравствуйте, а не подскажите как можно быстро сохранить таблицу в БД и быстро достать её, и возможно ли это?
maint
Цитата(ruzik @ 9.4.2011, 22:48) *
Здравствуйте, а не подскажите как можно быстро сохранить таблицу в БД и быстро достать её, и возможно ли это?

совершенно не внятный вопрос. Уточнить надо бы
ruzik
Постараюсь поточнее, есть ли такая функция типа tableWiget->saveDataInDataBase которая сохраняет все данные таблицы в БД, что бы не создавать самому БД и вручную не переписывать.
vankleef
какую субд используешь?
ruzik
SQLITE
vankleef
насколько я знаю, sqlite может существовать только в оперативной памяти.
можешь попробовать сделать свои функции:
1) сохраняет таблицу в файл
2) востанавливает из файла него обратно

если не хочешь сильно морочиться - поставь mysql. удобная морда для него mysql workbench
ruzik
Цитата(vankleef @ 9.4.2011, 20:49) *
насколько я знаю, sqlite может существовать только в оперативной памяти.
можешь попробовать сделать свои функции:
1) сохраняет таблицу в файл
2) востанавливает из файла него обратно

если не хочешь сильно морочиться - поставь mysql. удобная морда для него mysql workbench

Если БД хранится в оперативке тогда файла не должно создаваться, а он создается и сохраняется после того как из программы вышли а если простое MySql то для него думаю придется делать все те же действия, не могли бы вы дать пару примеров работы с MySql
vankleef
я вас не понимаю... у вас уже что-то сохраняется и что-то создается?
сохранение:
1) таблицы хранятся в ОЗУ
2) делаем запрос SELECT * FROM имя_таблицы; и записываем результат в файл: каждая запись-отдельная строка, поля разделены пробелами

чтение:
1) читаем данные из файла построчно
2) записываем в таблицу: каждое слово-есть следуюцее поле, каждая новая строка-новая запись

ну это так, на скорую руку..

какие именно примеры нужны для работы с mysql?
создать базу данных можно через mysql workbench, чтобы нагляднее/быстрее/проще создать/связать/обеспеить ссылочную целостность, даже er модели может, etc...
запросы - не очень много синтаксиса.

вопросы почетче желательнее)

очень хорошая инструкция тут, всегда использую ее, если чтото забыл
MoPDoBoPoT
Цитата(vankleef @ 9.4.2011, 20:49) *
насколько я знаю, sqlite может существовать только в оперативной памяти.

Неверно.
Цитата(ruzik @ 9.4.2011, 18:42) *
есть ли такая функция типа tableWiget->saveDataInDataBase которая сохраняет все данные таблицы в БД, что бы не создавать самому БД и вручную не переписывать.

Прям такого готового решения нет. Файл базы данных SQLite создаётся при открытии соединения, если он ещё не существует. Таблицу, конечно, придётся создавать SQL запросом, а для работы с таблицей, думаю, подойдёт QSqlTableModel.
ruzik
Я тоже сначала думал про QSqlTableModel, но там надо TableView а у меня TableWidget, можно создать свой класс и там переопределить метод setModel(он virtual), просто я в дизайнере установил очень много свойств, не знаете можно ли как бы апгрейдить существующий объект до другого класса(наследника класса объекта), или может проще присвоить?
MoPDoBoPoT
Цитата(ruzik @ 10.4.2011, 17:41) *
не знаете можно ли как бы апгрейдить существующий объект до другого класса(наследника класса объекта)

Можно. Кидаете "базовый" компонент на форму (QTableView), нажимаете на нём правой кнопкой мыши, выбираете "Promote to...", в диалоге указываете свой класс-наследник QTableView.
ruzik
Так в этом и есть главная загвоздка, я в дизайнере очень много значений и тп изменил, и если ставить QTableView они все сбросятся
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.