无法在C应用程序

时间:2017-07-03 14:00:35

标签: c sqlite

我正在尝试使用C Application显示firefox和chrome的历史。对于chrome的历史,它运行良好,因为Sql命令不包含符号但有chrome我的sql请求包含符号,所以这个函数没有'给我结果。它给我错误:

  

没有这样的表:moz_historyvisits

或者,当我从命令提示符测试此请求时,它运行良好。我认为问题是sql请求包含(_)符号。 Rq:对于镀铬历史,它运作良好。 CallbackFirefox用于显示结果 我正在使用Windows和代码块作为IDE。当我从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;
    }

1 个答案:

答案 0 :(得分:0)

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

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

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