gpt4 book ai didi

c - 无法在C应用程序中执行sqlite3

转载 作者:行者123 更新时间:2023-11-30 16:43:53 26 4
gpt4 key购买 nike

我正在尝试使用C应用程序显示firefox和chrome的历史记录。对于chrome的历史记录,它效果很好,因为Sql命令不包含符号,但对于chrome我的sql请求包含符号,所以这个函数不包含t 给我结果。它给我错误:

no such table :moz_historyvisits

或者,当我从命令提示符测试此请求时,它运行良好。我认为问题是 sql 请求包含 (_)symbols 。Rq:对于 chrome 历史记录,它效果很好。 CallbackFirefox是显示结果的函数我使用窗口和代码块作为 IDE 。当我执行 select name from sqlite_master 时 enter image description here

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;
}

最佳答案

system("cd C:/Users/******/AppData/Roaming/Mozilla/Firefox/Profiles/*.default");

system() 启动一个单独的 shell,该 shell 在执行命令后终止,因此这不会更改实际程序的当前目录。

您应该手动找出目录名,并将其包含在数据库文件名中。

关于c - 无法在C应用程序中执行sqlite3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44887533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com