sqlite3_open - 检查文件是否为sqlite3数据库的问题

时间:2009-12-09 22:40:56

标签: c++ c sqlite

我第一次使用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. }

2 个答案:

答案 0 :(得分:5)

在准备好第一个非sqlite3_open语句之前,

pragma实际上并未读取该文件。

sqlite3_open_v2提供其他选项。

答案 1 :(得分:-1)

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

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

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

并且您无法将某些内容(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))) { /* ... */ }