我正在使用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";
}
}
在运行脚本之前,您是否有与sql server的活动会话/连接,并具有访问DB open所需的权限?
如果它工作了,然后没有,这可能是问题所在,连接/登录关闭了,而您从未重新打开它。
请记住,如果您在localhost之外执行此操作,则会变得更加奇怪。
那么您必须查看该库是否正在打开多个连接,而不是像这里所描述的那样关闭它们
Qt-同时处理多个数据库连接