sqlite3_open – 检查文件是否为sqlite3数据库时出现问题

我是第一次使用sqlite3,在打开文件之前无法正确检查文件。 到目前为止,sqlite总是在任何文件上返回OK。

此外,文件名是从GTK文件选择器返回的变量。 它返回一个绝对路径,我猜这不是问题。

谢谢你的帮助。

这是代码的片段:

int rc; char *filename; sqlite3 *db; filename = gtk_file_chooser_get_filename(etc.); if(SQLITE_OK == rc = sqlite3_open(filename,&db)) { etc. } 

在准备好第一个非pragma语句之前, sqlite3_open实际上不会读取该文件。

sqlite3_open_v2提供其他选项。

你的代码是否编译?
我相信这是一个错误

 if (SQLITE_OK == rc = sqlite3_open(filename,&db)) { /* ... */ } 

它是一样的

 if ((SQLITE_OK == rc) = sqlite3_open(filename,&db)) { /* ... */ } 

并且您不能将某些内容( sqlite3_open()调用的结果sqlite3_open()分配给(SQLITE_OK == rc)

试试这个:

 if ((rc = sqlite3_open(filename,&db)) == SQLITE_OK) { /* ... */ } /* or, if you really want the constant on the left side of the comparison */ if (SQLITE_OK == (rc = sqlite3_open(filename,&db))) { /* ... */ }