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
是否已存在以及受影响的行数。