在QT中创建数据库

时间:2009-10-08 00:15:59

标签: qt

新手在此处创建数据库时遇到问题。 以下代码编译好,但没有创建数据库,我找不到任何sqlite文件。

#include "makeDB.h"
#include <iostream>
#include <QString>
#include <QtSql>

void makeDB(QString dbName) {
   QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
   db.setHostName("localHost");
   db.setDatabaseName(dbName);
   db.setUserName("logger");
   db.setPassword("logger");
}

#include <QtGui/QApplication>
#include <QString>
#include <QtSql>
#include "mainwindow.h"
#include "makeDB.h"
#include "createTable.h"
#include "ui_mainwindow.h"


int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  MainWindow w;
  w.show();

  makeDB("log1");

  createTable();

  return a.exec();
}

我在这里做错了什么?谢谢! Waynew 编辑/删除消息

1 个答案:

答案 0 :(得分:3)

我们无法看到你createTable()做了什么,你从未调用过的代码db.open()大多数QT数据库和SQL调用返回bool成功,并且有一个{ {1}} lastError()QSqlDatabase来电的{1}}功能。检查是否有适当的电话,即QSqlQuerydb.open()返回false。

e.g。

query.exec()

此外,我不认为SqlLite支持任何类型的身份验证this似乎表明您可以通过从SqlLite的创建者那里获得扩展许可来保护您的数据库。

对于实际的表创建,应该有一些执行的SQL如下所示:

bool makeDB(QString dbName) {
  QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  db.setHostName("localHost");
  db.setDatabaseName(dbName);
  bool result = db.open();
  if (result)
  {
    //do more processing
  }
  else
  {
    qDebug() << db.lastError().text()
  }
  return result;
}

取决于您实际需要的列。

This是相应的文档。