QSQLQUERY的语法错误源



当我在数据库上执行源命令时,QSQLQUERY有问题。此代码有效:

QString myRequest = "CREATE DATABASE MY_DATABASE;";
lQueryResult.Exec(myRequest);
if(!lQueryResult.GetMexec())
{
    qDebug() << "Error in the request";
    return false;
}
else
{
    qDebug() << "The request is OK";
}

此代码不起作用,我有一个语法错误:

您有错误 您的SQL语法;检查与您的MariadB相对应的手册 服务器版本,用于靠近'源的正确语法 ./folder/myfile.sql'在第1行qmysql:无法执行查询

这是代码:

myRequest = "source myFile.sql";
lQueryResult.Exec(myRequest);
if(!lQueryResult.GetMexec())
{
    qDebug() << "Error";
    qDebug() << lQueryResult.LastError();
    return false;
}
else
{
    qDebug() << "OK";
}

我可以通过此命令成功地完成我的源:

QString lCommand("mysql -uUsername -pPassword Data_Base -e "source " + variablePath + variableFile + ".sql"");
        system(lCommandeProvisoire.toStdString().c_str());

我没有错误。但是,如果我在此之后执行此代码,则有错误

未选择QMYSQL的数据库:无法执行查询

TheRequest = "SELECT * FROM MyTable;";
        QueryResult.Exec(TheRequest);
        if(!QueryResult.GetMexec())
        {
            qDebug() << QueryResult.LastError();
            return false;
        }
        else
        {
            qDebug() << "OK";
        }

但是,如果我从shell中执行了一个select *,它可以工作。

另外,如果我在登录的mysql登录的外壳中执行此操作,则可以使用:

source myFile.sql

SOURCE是mysql client命令,这意味着它是由mySQL shell执行的,而不是由mySQL Server执行的,因此您无法通过QSqlQuery执行它。您可以通过阅读整个文件,然后将其内容发送到服务器来解决此问题。

相关内容

  • 没有找到相关文章

最新更新