我正在尝试使用C Application显示firefox和chrome的历史。对于chrome的历史,它运行良好,因为Sql命令不包含符号但有chrome我的sql请求包含符号,所以这个函数没有'给我结果。它给我错误:
没有这样的表:moz_historyvisits
或者,当我从命令提示符测试此请求时,它运行良好。我认为问题是sql请求包含(_)符号。 Rq:对于镀铬历史,它运作良好。 CallbackFirefox用于显示结果 我正在使用Windows和代码块作为IDE。当我从sqlite_master执行选择名称时
int DisplayFirefoxHistory()
{
sqlite3 *db;
char *err_msg = 0;
system("cd C:/Users/******/AppData/Roaming/Mozilla/Firefox/Profiles/*.default");
int rc = sqlite3_open("places.sqlite", &db);
if (rc != SQLITE_OK) {
fprintf(stderr, "Cannot open database: %s\n",sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
char *sql = "select url,datetime(visit_date/1000000-11644473600,'unixepoch') from moz_historyvisits,moz_places order by visit_date desc";
rc = sqlite3_exec(db, sql, callbackFirefox, NULL, &err_msg);
if (rc != SQLITE_OK ) {
fprintf(stderr, "Failed to select data\n");
fprintf(stderr, "SQL error: %s\n", err_msg);
sqlite3_free(err_msg);
sqlite3_close(db);
return 1;
}
sqlite3_close(db);
return 0;
}
答案 0 :(得分:0)
system("cd C:/Users/******/AppData/Roaming/Mozilla/Firefox/Profiles/*.default");
system()
启动一个单独的shell,在执行命令后终止,因此这不会更改实际程序的当前目录。
您应手动找到目录名称,并将其包含在数据库文件名中。