2013-09-29 70 views
1

我使用SQLite3庫來讀取Chrome的歷史記錄。但是,我成功地閱讀了歷史記錄,當我嘗試插入數據時,數據已插入,但未顯示在Google Chrome的歷史記錄中。這裏是我的代碼插入到歷史:Google Chrome SQLite3插入數據

SQLiteCommand Command = new SQLiteCommand(); 
Command.Connection = Connection; 
Command.CommandText = "INSERT INTO urls(url,title,visit_count,typed_count,last_visit_time,hidden,favicon_id) VALUES ('My Website','http://coolsite.com',40,30,(@Date),0,0)"; 
SQLiteParameter DateParam = new SQLiteParameter("Date", DbType.Int64); 
DateParam.Value = DateTime.Now.Ticks; 
Command.Parameters.Add(DateParam); 
Command.ExecuteNonQuery(); 

歷史項目使用創建此代碼,但如果谷歌Chrome瀏覽器的歷史記錄選項卡查看它不會出現。我在插入和Chrome插入時發現的差異是TimeStamp。請參閱下面的截圖:

http://i.imgur.com/64UXP2Z.jpg

如何正確添加該行並使其出現在Chrome瀏覽器的歷史記錄選項卡的任何想法?

+1

Chrome不會測量Windows ticks中的時間戳。數據庫包含其他必須具有匹配記錄的表。 –

回答

0

爲了正確地輸入數據,以鉻合金的餐桌,首先你需要@Date參數,以適應Chrome的計算,顯然‘這個參數,它是(相當準確)的WebKit的’格式:

long chromeTime = ConvertToUnixTime(DateTime.UtcNow) + 11644473600) * 1000000; 

其中Convert to Unix time

public static long ConvertToUnixTime(DateTime aDateTime) 
{ 
    var epochTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); 
    return Convert.ToInt64((aDateTime - epochTime).TotalSeconds); 
} 

伴隨着的是,重要部分是插入到「訪問」表中的行與匹配id和符合條件的值,例如:

INSERT INTO visits(id,url,visit_time,from_visit,transition,segment_id,visit_duration) VALUES (3,50,1.305334687E+16,0,805306368,0,0) 

如果還是不行,請嘗試從「網址」和「訪問」表中刪除現有行第一。