2017-07-03 11 views
0

Cアプリケーションを使用してfirefoxとchromeの履歴を表示しようとしています.Sqlコマンドにはシンボルは含まれていませんがChromeには履歴が含まれていますシンボルは、ので、この機能は、私は私にエラーを与える.IT結果与えるものではありません:Cアプリケーションでsqlite3を実行できませんでした

いいえ、そのようなテーブル:moz_historyvisits

それとも、私はコマンドからのこの要求をテストするとき、それがうまく機能プロンプト。私の問題は、SQLリクエストには(_)記号が含まれていると思います。 Rq:クローム履歴の場合はうまく機能します。 CallbackFirefoxは結果を表示する機能です 私は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

はい、コマンドプロンプトで同じsqlコマンドをコピー&ペーストするとうまくいきます。クロム履歴を表示するときにsqlite3が機能するので、環境やライブラリの問題にはならない –

+1

あなたはyesと答えていますが、コマンドラインツールでSQLを実行してSQLのテーブルを見つけることはできません。 SQLを "SELECT name FROM sqlite_master"に置き換えて、コードが見つかったテーブルを確認してください。 –

答えて

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

system()から選択名を実行すると、コマンドを実行した後に終了し、別のシェルを起動しますので、これはあなたの実際のプログラムのカレントディレクトリを変更しません。

ディレクトリ名は手動で調べ、データベースファイル名に含める必要があります。

関連する問題