0
我試圖顯示使用C應用程序的Firefox和鉻的歷史記錄。對於鉻的歷史記錄,它工作正常,因爲Sql命令不包含符號,但與鉻我的SQL請求包含符號,所以這個功能並沒有給我造成。它給我的錯誤:無法在C應用程序中執行sqlite3
沒有這樣的表: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;
}
你確定你的代碼打開了正確的數據庫嗎? –
是的,當我在命令提示符中複製並粘貼相同的sql命令時,它的效果很好。它不能成爲環境或庫的問題,因爲sqlite3在顯示鉻歷史記錄時工作 –
你說是的,但是你的代碼報告說你無法在你的SQL中找到你已經證明存在的表,這是通過在命令行工具中運行SQL來實現的。嘗試用「SELECT name FROM sqlite_master」代替你的SQL並打印出結果,看看你的代碼找到了哪些表 –