C++ 我应该如何将qstring插入qt中的sqlite数据库

C++ 我应该如何将qstring插入qt中的sqlite数据库,c++,database,sqlite,qt,C++,Database,Sqlite,Qt,我想将2QString插入我的数据库,但我遇到了以下错误: QSqlError(1, "Unable to execute statement", "table login_t already exists") 我的数据库是空的我的代码是: void School::set_db( QString usern, QString pass ) { QSqlDatabase db1 =QSqlDatabase::addDatabase("QSQLITE"); db1.setData

我想将2
QString
插入我的数据库,但我遇到了以下错误:

QSqlError(1, "Unable to execute statement", "table login_t already exists")
我的数据库是空的我的代码是:

void School::set_db( QString usern, QString pass )
{
    QSqlDatabase db1 =QSqlDatabase::addDatabase("QSQLITE");
    db1.setDatabaseName( "school1.db");
    bool isOpen = db1.open() ;
    QSqlQuery q(db1);
    QString queryString = "INSERT INTO login_t (user, pass) VALUES (?,?)";
    q(queryString);
    q.addBindValue(usern);
    q.addBindValue(pass);
    q.exec();
}
set_db("user1" , "pass1");

我以前创建过数据库和表。

根据您的错误消息
表登录已存在
,我可以看出,您尝试在该表已存在时创建表
登录
。(您应该尝试创建空数据库(不带表),在修复prepare语句时,再次运行代码)


另一方面,若在运行代码之前创建了DB和表,那个么只需要在查询中使用fix prepare语句。(别忘了,dataBaseName会获取数据库的完整路径。如果您编写
school.DB
,它将在
bin
文件附近搜索数据库文件)

确保正确创建了数据库。您可以使用像这样的外部工具。您还可以尝试“重新创建”整个数据库,并检查问题是否已修复

查看下面的代码:

bool School::set_db(QString usern, QString pass)
{
    QSqlDatabase db1 = QSqlDatabase::addDatabase("QSQLITE");

    // You need to set the full path to the database file. E.g.: "C:/Databases/school1.db"
    db1.setDatabaseName("school1.db");

    if( !db1.open() )
    {
        qDebug() << "Could not open the database connection!";
        qDebug() << "Error:" << db1.lastError();
        return false;
    }

    QSqlQuery query(db1);
    QString queryString = "INSERT INTO login_t (user, pass) VALUES (:user, :pass)";

    if( !query.prepare(queryString) )
    {
        qDebug() << "Prepare:" << query.lastError();
        return false;
    }

    query.addBindValue(":user", usern);
    query.addBindValue(":pass", pass);

    if( !query.exec() )
    {
        qDebug() << "Exec:" << query.lastError();
        return false;
    }

    return true;
}

set_db("user1", "pass1");
bool School::set_db(QString usern,QString pass)
{
QSqlDatabase db1=QSqlDatabase::addDatabase(“QSQLITE”);
//您需要设置数据库文件的完整路径。例如:“C:/Databases/school1.db”
db1.setDatabaseName(“school1.db”);
如果(!db1.open())
{
qDebug()