谷歌浏览器SQLite3插入数据

本文关键字:数据 插入 SQLite3 谷歌浏览器 | 更新日期: 2023-09-27 18:33:22

我正在使用SQLite3库来读取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();

"历史记录"项是使用此代码创建的,但如果在 Google Chrome 的"历史记录"标签中查看,则不会显示。我在插入和Chrome的插入中发现的区别是时间戳。请参阅下面的屏幕截图:

https://i.stack.imgur.com/0MSnA.jpg

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

谷歌浏览器SQLite3插入数据

为了将数据正确输入到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)

如果这不起作用,请先尝试从"网址"和"访问次数"表中删除现有行。