c++ - 用于检查字段是否存在的 SQLite 查询失败

标签 c++ sqlite

我正在使用以下查询来检查特定骨灰盒是否存在(是或否),我得到的是是(这是不正确的,因为骨灰盒不在表中)

sqlstr = "SELECT EXISTS (SELECT * FROM main.mytable WHERE `urn` = 'dssdsdds')";
        char **results = NULL;
        int rows, columns;
        sqlite3_get_table(db, sqlstr, &results, &rows, &columns, &error);
if(rows >0 )
{
///Item is present
}

我知道骨灰盒不存在,但我仍然得到行 > 0(行 = 1)有什么建议吗?

最佳答案

SELECT EXIST 总是会返回一些东西,要么是“true”要么是“false”。

更好的解决方案(在我看来)可能是使用例如

SELECT COUNT(*) FROM main.mytable WHERE `urn` = 'dssdsdds'

然后获取单行并检查其单列值。如果它为零,则“骨灰盒”不存在。


关于数据库查询的一般提示:连接到数据库并执行查询。这样您将看到查询实际返回的内容。

关于c++ - 用于检查字段是否存在的 SQLite 查询失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22957194/

相关文章:

c++ - 学习递归 : How can I locate a substring index within a string without using find?

c++ - 在没有特定 IDE 的 Windows 7 中使用 Rcpp 和 RInside

java - 在 Java REST Web 服务中访问 WEB-INF

bash - 如何在 bash 中转义 sqlite3 查询参数?

android - Android 中外部存储的 SQLite 性能不佳

c++ - 我如何在 Gecode 中使用评价函数?

c++ - 子类化 QTcpServer 时,如何延迟发出 newConnection() 信号?

c++ - 为什么像 std::is_permutation() 这样的函数本质上不是不安全的?

android - 部署我的 MVVMCross Xamarin.Android 应用程序似乎会清除应用程序的文档存储

sql - 参数化语句真的会更改存储在数据库中的数据以防止 SQL 注入(inject)吗?