C++ 如何有效地检查/限制sqlite数据库大小?
我想检查SQLite数据库的大小,如果它太大,它会通知用户停止向其中插入数据 但是我如何才能有效地检查数据库的总行数或文件大小呢?最好有一些O(1)方法,这样我就可以检查用户提交的每个插入C++ 如何有效地检查/限制sqlite数据库大小?,c++,sql,sqlite,qt,C++,Sql,Sqlite,Qt,我想检查SQLite数据库的大小,如果它太大,它会通知用户停止向其中插入数据 但是我如何才能有效地检查数据库的总行数或文件大小呢?最好有一些O(1)方法,这样我就可以检查用户提交的每个插入 我主要为Windows开发Qt。您只需检查数据库文件和相关日志的大小即可。这将是O(1),因为系统调用的数量将始终相同。大概是这样的: if (QFileInfo(dbFilePath).size() + QFileInfo(dbFilePath + "-journal").size() > maxSi
我主要为Windows开发Qt。您只需检查数据库文件和相关日志的大小即可。这将是O(1),因为系统调用的数量将始终相同。大概是这样的:
if (QFileInfo(dbFilePath).size() + QFileInfo(dbFilePath + "-journal").size() > maxSize) {
// Prevent insertion
}
我相当肯定,[table]中的
select count(*)被优化为常数时间,而不是实际遍历所有行。这就足够了吗?请记住,SQLite数据库通常会无限制地增长,除非您不时仔细清理它们:对不起,这是什么“-journal”部分?@Nyaruko,SQLite在数据库文件旁边创建一个日志文件来存储事务。该文件的名称只是附加在末尾的db文件名+“-journal”。因此,如果您的文件是mydb.sqlite,那么日志将是mydb.sqlite-journal