1

我正在使用 SQLite3 库来阅读 Chrome 的历史记录。我成功地阅读了历史记录,但是,当我尝试插入数据时,数据已插入但未显示在 Google Chrome 的历史记录中。这是我要插入历史记录的代码:

 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();

History 项目是使用此代码创建的,但如果在 Google Chrome 的 History 选项卡中查看,它将不会出现。我在插入和 Chrome 插入中发现的区别是时间戳。请参阅下面的屏幕截图:

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

关于如何正确添加行并使其显示在 Chrome 的历史记录选项卡中的任何想法?

4

1 回答 1

0

为了将数据正确输入到 Chrome 的表格中,首先您需要@Date适合 Chrome 计算的参数,显然是“webkit”格式,该参数是(非常准确):

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

在哪里转换为 Unix 时间

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)

如果这不起作用,请先尝试从“urls”和“visits”表中删除现有行。

于 2014-08-24T09:48:25.200 回答