问:如何检查输入的主键是否存在于SQLite数据库中?

时间:2015-12-15 11:48:56

标签: database qt sqlite primary-key

我正在尝试检查主键(由用户手动输入)是否已存在于SQLite数据库中(以便决定是继续插入新记录还是更新存在的)。

我试过了:

  • query.exce();
  • query.isEmpty();
  • and bellow我正在尝试:guery.isNull();

然而,他们都给我相同的结果:他们都说记录不存在(返回0)并转到插入功能。即使ref_no确实存在,它们也返回0)。

以下是isNull()功能的代码:

int DatabaseManager::checkRefNoExist(QString ref_no){
    QSqlQuery query;
    query.prepare("SELECT * FROM basic_info WHERE ref_no = :ref_no");
    query.bindValue(":ref_no", ref_no);
    query.exec();

    if(query.isNull(ref_no.toInt())){
        return 0; // whatever the ref_no is, it always comes here !!
    } else {
        return 1;
    }
}

1 个答案:

答案 0 :(得分:2)

您使用ref_no.toInt()作为列索引。这没有意义。

要检查查询是否返回任何结果行,请尝试获取第一个结果(使用query.first()query.next())。