我花了 2 天时间试图解决一个非常烦人的简单问题:我正在用 C++ 创建一个数据库:
sqlite3 *database;
rc = sqlite3_open(dbname, &database);
char* statement = "CREATE TABLE ONE(ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, NAME CHAR(50) NOT NULL, LABEL CHAR(50), GRP CHAR(50), FILE BLOB );";
rc = sqlite3_exec(database, statement, callback, 0, &zErrMsg);
sqlite3_close(database);
效果很好,使用 SQLite Studio 检查了数据库结构。现在我试图通过执行以下语句插入任何内容:
int rc = sqlite3_open(dbname, &database);
char *zErrMsg = 0;
char* statement = "INSERT INTO ONE( ID, NAME, LABEL, GRP, FILE ) VALUES ( NULL, 'fedfs', NULL, NULL, NULL);";
rc = sqlite3_exec(database, statement, callback, 0, &zErrMsg);
sqlite3_close(database);
这不断向我抛出 SQLite 错误 1,“没有这样的表:一个”。数据库文件确实可以正确打开。我没主意了。
除此之外,我正在尝试找出一种使用 ifstream 打开 PDF 文件并将其存储为 SQLite 中的 BLOB 的方法。是否使用 ifstream 打开文件以将其存储为二进制文件的正确方法?