SQLite在QT创建查询

SQLite CREATE query in QT

本文关键字:查询 创建 QT SQLite      更新时间:2023-10-16
dataBase = QSqlDatabase::addDatabase("QSQLITE");
dataBase.setDatabaseName("login_password.sqlite");
QSqlQuery authQuery;
if(!dataBase.open())
{
    qDebug() << dataBase.lastError().text();
}
QString create("CREATE TABLE BASE(LOGIN VARCHAR(15) PRIMARY KEY NOT NULL, "
               "PASSWRD TEXT(50) NOT NULL, RIGHTS INT NOT NULL);");
bool state = authQuery.exec(create);
if(!state) qDebug() << "Не удалось создать таблицу!";

查询有什么问题,是否有可能使文本为主键?

From the docs:

警告:在 a之前,必须加载SQL驱动程序并打开连接完成QSqlQuery的创建。此外,连接必须保持打开状态查询存在;否则,QSqlQuery的行为未定义。

在您的问题中,您在打开数据库之前创建QSqlQuery,您必须在dataBase.open()调用之后移动authQuery声明语句,如下所示:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("login_password.sqlite");
if (!db.open())
    qDebug() << "error opening database: " << dataBase.lastError().text();
QSqlQuery authQuery;
QString create("CREATE TABLE BASE(LOGIN VARCHAR(15) PRIMARY KEY NOT NULL, "
               "PASSWRD TEXT(50) NOT NULL, RIGHTS INT NOT NULL);");
if(!authQuery.exec(create)){
    qDebug() << "error executing statement: " << authQuery.lastError().databaseText();
}