我无法使用 qt 6 将数据插入我的 sqlite3 数据库

发布于 2025-01-15 22:47:17 字数 1090 浏览 1 评论 0原文

我的项目目录中有一个 test.db 数据库,我正在尝试将数据插入其中。数据库已连接,但似乎无法向其中插入数据。该查询根本没有执行(看起来),因为 qDebug 显示“Bad”。

QSqlDatabase connectDB(){
    QSqlDatabase db= QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("test.db");
    return db;

}

void planner::on_dataSend_clicked()
{
    QSqlDatabase datba = connectDB();
    if (datba.open()){
        qDebug()<< "DB Suc";
    } else{
        qDebug() << "DB Fail";
    }
    QString what = ui->addPlan->text();
    QSqlQuery qry;
    qry.prepare("insert into plan values :what");
    qry.bindValue(":what",what);
    if (qry.exec()){
             qDebug()<< "Good";
             qry.clear();

          } else{
             qDebug()<<"Bad";
             qDebug()<<qry.lastError();
             qry.clear();

          }
    datba.close();
    ui->addPlan->clear();


}

我正在使用 SQLite 的数据库浏览器,这是 数据库

QSqlError 显示的错误是参数计数不匹配此处

I have a test.db database on my project directory, which I'm trying to insert data into. The database is connected, but I can't seem to insert data in it. The query is not executed at all (it seems), since the qDebug shows "Bad".

QSqlDatabase connectDB(){
    QSqlDatabase db= QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("test.db");
    return db;

}

void planner::on_dataSend_clicked()
{
    QSqlDatabase datba = connectDB();
    if (datba.open()){
        qDebug()<< "DB Suc";
    } else{
        qDebug() << "DB Fail";
    }
    QString what = ui->addPlan->text();
    QSqlQuery qry;
    qry.prepare("insert into plan values :what");
    qry.bindValue(":what",what);
    if (qry.exec()){
             qDebug()<< "Good";
             qry.clear();

          } else{
             qDebug()<<"Bad";
             qDebug()<<qry.lastError();
             qry.clear();

          }
    datba.close();
    ui->addPlan->clear();


}

I'm using DB Browser for SQLite, and this is the database

The error that QSqlError shows is parameter count mismatch here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

把时间冻结 2025-01-22 22:47:17

在 SQLITE 表上,有一个默认列作为主键,称为 rowid,您需要指定要添加的列,如下所示:

qry.prepare("insert into plan (column_name) values (:what)");

On SQLITE table, there is a default column as a primary key called rowid, you need to spécify the column that you want to add like this:

qry.prepare("insert into plan (column_name) values (:what)");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文