提问者:小点点

如何创建一个表到数据库?


我正在使用QSqlDatabase创建db和表,但最近遇到了一个问题。

我创建了一个完美打开的数据库(当我创建数据库时,我打开它来检查是否一切正常,但后来我从代码中删除了打开),没有出现任何问题。 然后我尝试用另一种方法创建表,但是我无法打开我的db来创建它。 控制台中没有错误。

这里是我的代码

void DbManager::createDb(QString name)
{
    if (!QFile::exists(name))
    {
        QSqlDatabase db;
        db = QSqlDatabase::addDatabase("QSQLITE", name);
        db.close();
    }
}

void DbManager::createTable(QString dbName, QString tableName)
{
    if(QFile::exists(dbName))
    {
        qDebug() << "database exists";
        QSqlDatabase db = QSqlDatabase::database(dbName);
        if(db.open())
        {
            qDebug() << "no way: Database is opened!";
            QString about = "CREATE TABLE " + tableName +
                    "Id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL " +
                    "pictureSource VARCHAR(50)" +
                    "projectName VARCHAR(50)" +
                    "projectDescription VARCHAR(50)";

            QSqlQuery qry;
            if(!qry.exec(about))
            {
                qDebug() << "error: cannot create table";
            }
        }
        else {
            qDebug() << "error: cannot open database";
        }
    }
    else {
        qDebug() << "database doesn't exists";
    }
}

共1个答案

匿名用户

在运行脚本之前,您是否有与sql server的活动会话/连接,并具有访问DB open所需的权限?

如果它工作了,然后没有,这可能是问题所在,连接/登录关闭了,而您从未重新打开它。

请记住,如果您在localhost之外执行此操作,则会变得更加奇怪。

那么您必须查看该库是否正在打开多个连接,而不是像这里所描述的那样关闭它们

Qt-同时处理多个数据库连接