Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.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/C+中打开+;_C++_C_Sqlite - Fatal编程技术网

C++ 如何检查SQLite数据库是否在C/C+中打开+;

C++ 如何检查SQLite数据库是否在C/C+中打开+;,c++,c,sqlite,C++,C,Sqlite,我希望能够检查给定的SQLite数据库是否打开。如何在C/C++中实现这一点?我环顾了一下SQLite C/C++API,没有看到明显的用于此目的的东西。正如WhozCraig首先提到的,您需要检查sqlite3\u open的返回值。如果返回代码为SQLITE_OK,则表示数据库已打开。您可能还需要检查指针参数是否未设置为null 这在该函数的接口上 是一个邮件列表帖子,其中有人解释了为什么没有isOpen函数: 除非open成功,否则应用程序无法使用sqlite3句柄,因此 不需要一个is

我希望能够检查给定的SQLite数据库是否打开。如何在C/C++中实现这一点?我环顾了一下SQLite C/C++API,没有看到明显的用于此目的的东西。

正如WhozCraig首先提到的,您需要检查
sqlite3\u open的返回值。如果返回代码为SQLITE_OK,则表示数据库已打开。您可能还需要检查指针参数是否未设置为null

这在该函数的接口上

是一个邮件列表帖子,其中有人解释了为什么没有isOpen函数:

除非open成功,否则应用程序无法使用sqlite3句柄,因此 不需要一个is open函数。那不可能,因为 sqlite3_open()分配sqlite3句柄,这意味着客户端不能有 sqlite3_open()成功之前的有效句柄。看看它是否打开了, 检查指针是否为空(当然必须初始化) 它必须为,否则它有一个未指定的值)

关闭后,再次将其赋值为NULL,此时将显示“已打开” 旗帜

另外,强烈建议使用创建DatabaseHandle类。这样,当您完成时,您的程序一定会使用
sqlite3
对象进行调用。从
sqlite3\u open
的文档中:

无论在打开时是否发生错误,都需要关联资源 数据库连接句柄应该通过传递它来释放 当不再需要sqlite3_close()时,将其复制到sqlite3_close()


你的问题需要澄清,或者为“你回来了什么?”的连珠炮声做准备。好吧,你已经打过电话了,不是吗?然后,您应该检查当时是否打开了数据库,否则您应该优雅地处理错误(如果数据库对应用程序的运行至关重要,那么错误处理可能是退出程序)@WhozCraig和Joachim Pileborg:NicholasM回答下面邮件列表的链接回答了我的问题。