Google Chrome SQLite3插入数据

时间:2013-09-29 11:14:10

标签: c# google-chrome sqlite

我正在使用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();

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

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

如何正确添加行并将其显示在Chrome的“历史记录”标签中?

1 个答案:

答案 0 :(得分:0)

为了正确地输入数据到Chromes'表格,首先您需要@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)

如果这不起作用,请尝试删除“网址”中的现有行。和'访问'表格首先。