SQLite3 C 接口:如何确定表的存在
SQLite3 C interface: how to determine existence of a table
我正在使用C++的SQLite3 C接口,需要能够确定给定表的存在。有没有办法在不直接使用 SQL 的情况下做到这一点?例:
bool exists = sqlite3_table_exists("myTable");
是否有具有类似功能的功能?
若要检查表是否存在,请检查以下查询是否返回任何行:
SELECT name FROM sqlite_master WHERE type='table' AND name='your_table_name_here'
要运行查询并检查行是否存在,以下是代码:
sqlite3_stmt *pSelectStatement = NULL;
int iResult = SQLITE_ERROR;
bool ret = false;
iResult = sqlite3_prepare16_v2(m_pDb, query, -1, &pSelectStatement, 0);
if ((iResult == SQLITE_OK) && (pSelectStatement != NULL))
{
iResult = sqlite3_step(pSelectStatement);
//was found?
if (iResult == SQLITE_ROW) {
ret = true;
sqlite3_clear_bindings(pSelectStatement);
sqlite3_reset(pSelectStatement);
}
iResult = sqlite3_finalize(pSelectStatement);
}
也可以作为替代方案,[可能]适用于任何 SQL 数据库select count(*) from table_that_might_exist limit 1
。
相关文章:
- 无论如何,我可以确定构造函数是否存在吗?
- 存在内存访问异常,但我不确定我的代码中出了什么问题
- 关于使用ifstream在C 中确定文件是否存在的问题
- 如何确定模板专用化是否存在
- 确定矢量中是否存在重复项
- 打开文件,如果不存在,则创建,确定是否创建
- UNORDERED_MAP的存在确定是否使用了复制构建器或移动构造器
- C++:你如何确定一个解是微不足道的还是不存在的二次函数?
- C++如何确定元素是否存在于动态分配的数组中
- 我如何使用REGEX确定Linux上C/C 中文件组的存在和大小
- 如何确定Windows 10中的高对比度主题是否存在
- 如何确定 BGL 中的 2 个顶点之间是否存在路径
- 确定其他线段之间是否存在相交线段
- 有没有办法确定日期/时间是否不存在
- 什么是C++中的不确定行为?它与未定义的行为有何不同
- 在 n 个变量中查找单个线性方程的解,或确定不存在解
- 确定是否存在串行端口,Linux C/C++
- 如果带有HWND的窗口仍然存在,我该如何确定
- C++中内存泄漏本身存在多长时间,以及等效的Java程序有何不同
- 如何在VC++中不使用.NET Framework来确定特定事件日志是否存在