QSql查询行受影响的结果


SHA256 sha256;
std::string s = sha256(pass.toStdString());
QString myquery = "declare @identifier nvarchar(100) = NEWID()
declare @user_name nvarchar(50) = '"+user+"'
declare @pass_word nvarchar(100) = '"+QString::fromStdString(s)+"'
declare @hint nvarchar(50) = '"+hint+"'
if NOT exists(select * from user_table where (userid=@identifier or username = @user_name))
insert into user_table (username,password,password_salt,userid) values(@user_name,@pass_word,@hint,@identifier)";
qDebug()<<myquery;
openSqlConnection();
QSqlQuery q3;
q3.exec(myquery);

执行此查询后,我应该看到如果成功执行将(1 row(s) affected)的结果。

如果数据库中已存在username,则结果将是

命令已成功完成。

要查看我使用q3.next()select的结果。

如何知道我的查询已成功执行?

我如何知道我的查询已成功执行?

您在这里有很多选择。您可以检查以下任一情况:

  • QSqlQuery::exec 的返回值
返回

true,如果查询成功,则将查询状态设置为活动;否则返回 false。

例如:

if (!q3.exec(myquery))
\ show error
  • 查询的状态,即 QSqlQuery::isActive

活动的 QSqlQuery 是已成功执行但尚未完成的查询。

例如:

q3.exec(myquery);
if (!q3.isActive())
\ show error
  • QSqlQuery::lastError 的类型

QSql错误::否错误 0 未发生错误。

例如:

q3.exec(myquery);
if (q3.lastError().type() != QSqlError::NoError)
\ show error

如果您通过了检查(您选择的检查(,则可以进一步处理查询,例如查看username是否已存在以及受影响的行数。

相关内容

  • 没有找到相关文章

最新更新