2016-08-03 10 views
0

내가이QVariant가 무효가 그 사이에 값이 나는 SQL에서이 명령을 수행 할 때

bool QcgDatabase::onceindb(const QString& userId) 
{ 
    mDb->prepareSqlQuery("SELECT count(*) FROM mytable WHERE userid=:userId;", "database"); 
    mDb->prepareBindValue(":userId", userId); 
    mDb->sqlExec(); 

    bool d = mDb->sqlQuery().isActive(); 
    QVariant c = mDb->sqlQuery().value(QString("count(*)")); 
    int e = c.toInt(); 

    if (e == 1) { 
     return true; 
    } 
    else { 
     return false; 
    } 
} 

같은 작은 기능이 유효 반환, 결과는 그냥 원하는이

sql

처럼 보인다 아래의 비교를 위해 2 값을 취해야합니다. 그러나 디버그 할 때 코드에서 QVariant c은 항상 유효하지 않으므로 e is always = 0을 반환합니다. 내 SQL 명령이 활성화되어 있지 않다고 생각했지만 디버그 할 때 bool d은 항상 true를 반환합니다. 너희들 왜 그 이유를 알고 있니? 예상대로 2을 어떻게받을 수 있습니까?

+0

'(C == 1의 경우)'이'if (e == 1)'라고되어 있나? –

+0

아마도 오류를 확인해야합니다 ... – hyde

+0

@HonestAbe : 예, 죄송합니다. 'e == 1'이어야합니다. 나는 이미 그것을 바로 잡는다, 당신이 문제를 지적하도록 도와 줄 수 있습니까? – htmlamateur

답변

0

특수한 (일부 지역이 유효하지 않은) 이름이 count(*) 인 컬럼에서 결과를 가져 오려고했습니다. 당신은 열 별칭을 설정하고 해당 열 별칭을 사용하여 값을 가져올 수 있습니다 ...

... 
mDb->prepareSqlQuery("SELECT count(*) as count FROM mytable WHERE userid=:userId;", "database"); 
... 
QVariant c = mDb->sqlQuery().value("count"); 
... 

그리고 확인 반환 오류 상태에 대한도 좋습니다 값을