QSqlQuery 的语法错误源
Syntaxe error source with 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";
}
此代码无效,我有一个语法错误:
You have an error in
your SQL syntax; check the manual that corresponds to your MariaDB
server version for the right syntax to use near 'source
./folder/myFile.sql' at line 1 QMYSQL: Unable to execute query
这是代码:
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());
我没有错误。但是,如果我在之后执行此代码,则会出现错误
No database selected QMYSQL: Unable to execute query
:
TheRequest = "SELECT * FROM MyTable;";
QueryResult.Exec(TheRequest);
if(!QueryResult.GetMexec())
{
qDebug() << QueryResult.LastError();
return false;
}
else
{
qDebug() << "OK";
}
但是,如果我在 shell 中从 MyTable 执行 select *,它会起作用。
此外,如果我在登录 mysql 的 shell 中执行此操作,它会起作用:
source myFile.sql
SOURCE
是 MySQL client command 这意味着它是由 MySQL shell 执行的,而不是由 MySQL 服务器执行的,所以你不能通过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";
}
此代码无效,我有一个语法错误:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'source ./folder/myFile.sql' at line 1 QMYSQL: Unable to execute query
这是代码:
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());
我没有错误。但是,如果我在之后执行此代码,则会出现错误
No database selected QMYSQL: Unable to execute query
:
TheRequest = "SELECT * FROM MyTable;";
QueryResult.Exec(TheRequest);
if(!QueryResult.GetMexec())
{
qDebug() << QueryResult.LastError();
return false;
}
else
{
qDebug() << "OK";
}
但是,如果我在 shell 中从 MyTable 执行 select *,它会起作用。
此外,如果我在登录 mysql 的 shell 中执行此操作,它会起作用:
source myFile.sql
SOURCE
是 MySQL client command 这意味着它是由 MySQL shell 执行的,而不是由 MySQL 服务器执行的,所以你不能通过QSqlQuery
。您可以通过读取整个文件然后将其内容发送到服务器来解决此问题。