crossplatform.ru

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

> Как очистить базу данных?, QSQLITE
RazrFalcon
  опции профиля:
сообщение 24.4.2011, 21:13
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


У меня DB используется в качестве table cached.
Иногда, мне нужно или ее вообще удалить или очистить полностью.
А у меня, новые данные просто в конец дописываются.
Пробовал так:
QSqlQuery query;
query.prepare("DELETE * FROM tags");
query.exec();
//так
db->removeDatabase("my.db");
//так
db->close();
//так
QSqlDatabase::removeDatabase(QSqlDatabase::database().connectionName());
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
RazrFalcon
  опции профиля:
сообщение 27.4.2011, 14:23
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


bool dbCreated=false; //так как мне не нужно ее снова создавать

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
  setupUi(this);

  QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  db.setDatabaseName(":memory:");
  //... остальной код
}

void MainWindow::addToSQL()
{
  QSqlDatabase db = QSqlDatabase::database();
  QSqlQuery query(db);
  QFileInfoList files = *selectedFilesInfoList;

  if (!dbCreated) {
    query.exec("create table tags (title text, "
                                  "artist text, "
                                  "album text)");
    dbCreated=true;
  }
  for (int i=0; i<files.count(); i++) {
    query.prepare("INSERT INTO tags VALUES "
                  "(:title, :artist, :album)");
    query.bindValue(":title", QS(tag->title()));
    query.bindValue(":artist", QS(tag->artist()));
    query.bindValue(":album", QS(tag->album()));
    query.exec();
  }
  model = new QSqlTableModel(this);
  model->setTable("tags");
  model->select();
  table->setModel(model);
  table->resizeColumnsToContents();
}

void MainWindow::on_actionClose_triggered() {
  QSqlDatabase db = QSqlDatabase::database();
  QSqlQuery query;
  query.exec("DELETE FROM tags");
  model->select();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 3.1.2025, 4:15