|
1Qter豆
第一次运行程序时创建了一个表,然后在这个表中插入了一些语句然后下次运行程序时,
为什么上次创建的那个表好像就不存在了,上次更新的数据也没有了
- #include <bookshow.h>
- #include <QMessageBox>
- #include <QHBoxLayout>
- #include <QVBoxLayout>
- #include <QInputDialog>
- BookShow::BookShow(QWidget *parent) :
- QWidget(parent)
- {
- if (openDataBase())
- {
- createDataBaseTable();
- QStringList data;
- data << "empty";
- query->exec("select Book_Name from BookInfo");
- while (query->next())
- data << query->value(0).toString();
- model = new QStringListModel(this);
- model->setStringList(data);
- view = new QListView;
- view->setModel(model);
- showButton = new QPushButton("Show", this);
- QObject::connect(showButton, &QPushButton::clicked,
- this, &BookShow::showDetail);
- deleteButton = new QPushButton("Delete", this);
- QObject::connect(deleteButton, &QPushButton::clicked,
- this, &BookShow::deleteData);
- insertButton = new QPushButton("Insert", this);
- QObject::connect(insertButton, &QPushButton::clicked,
- this, &BookShow::insertData);
- QHBoxLayout *buttonLayout = new QHBoxLayout;
- buttonLayout->addWidget(deleteButton);
- buttonLayout->addWidget(showButton);
- buttonLayout->addWidget(insertButton);
- QVBoxLayout *mainLayout = new QVBoxLayout;
- mainLayout->addWidget(view);
- mainLayout->addLayout(buttonLayout);
- setLayout(mainLayout);
- }
- }
- bool BookShow::openDataBase()
- {
- DataBase = QSqlDatabase::addDatabase("QSQLITE");
- DataBase.setHostName("localHost");
- DataBase.setDatabaseName("MyBook");
- DataBase.setUserName("root");
- DataBase.setPassword("123456");
- if (DataBase.open())
- {
- query = new QSqlQuery(DataBase);
- return true;
- }
- QMessageBox::information(this, "error", "The DataBase failed to open!");
- return false;
- }
- bool BookShow::createDataBaseTable()
- {
- QString tableName = "BookInfo";
- query->exec(QString("select * from sys.tables where name = '%1' ").arg(tableName));
- if (!query->next())
- return false;
- query->exec(QString("create table '%1'"
- "(Book_Name varchar(20),"
- "Author varchar(10),"
- "Word_Count int,"
- "Serial_Status bit").arg(tableName));
- return true;
- }
- void BookShow::showDetail()
- {
- }
- void BookShow::deleteData()
- {
- }
- void BookShow::insertData()
- {
- bool isOk;
- QString text = QInputDialog::getText(this, "Insert",
- "Please input new data:",
- QLineEdit::Normal,
- "you are inserting new data",
- &isOk);
- if(isOk)
- {
- QModelIndex currIndex = view->currentIndex();
- model->insertRows(currIndex.row(), 1);
- model->setData(currIndex, text);
- view->edit(currIndex);
- query->exec(QString("insert into BookInfo(Book_Name) values('%1')").arg(text));
- }
- }
复制代码
|
最佳答案
查看完整内容
sqlite3_open(const char *filename, sqlite3 **ppDb);
该例程打开一个指向 SQLite 数据库文件的连接,返回一个用于其他 SQLite 程序的数据库连接对象。
如果 filename 参数是 NULL 或 ':memory:',那么 sqlite3_open() 将会在 RAM 中创建一个内存数据库,这只会在 session 的有效时间内持续。
如果文件名 filename 不为 NULL,那么 sqlite3_open() 将使用这个参数值尝试打开数据库文件。如果该名称的文件不存在,sqlite3_open() ...
|