Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何有效地检查/限制sqlite数据库大小?_C++_Sql_Sqlite_Qt - Fatal编程技术网

C++ 如何有效地检查/限制sqlite数据库大小?

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

我想检查SQLite数据库的大小,如果它太大,它会通知用户停止向其中插入数据

但是我如何才能有效地检查数据库的总行数或文件大小呢?最好有一些O(1)方法,这样我就可以检查用户提交的每个插入


我主要为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