gpt4 book ai didi

c# - 如何将解析后的 H​​TML 存储到数据库中并比较数据库中的值

转载 作者:行者123 更新时间:2023-11-29 21:19:21 24 4
gpt4 key购买 nike

我的数据库有如下字段:ID(nvarchar)、开始日期(日期)、结束日期(日期)、状态(位)

我目前正在从网站解析 HTML,以便比较 2 个值(1 来 self 的本地数据库,其他来自网站)以确定它们是否相同。如果它们具有相同的值 - 完美。但是,如果日期或状态相差超过 7 天,或者状态显示“非事件”而不是“事件”(反之亦然),我希望它“添加到最终报告”,在遍历所有值后在桌面上存储一个 report.txt 文件(还不确定)

        SqlConnection conn = new SqlConnection(Properties.Settings.Default.LenovoWarrantyConnectionString);
conn.Open();
ArrayList lenovolist = new ArrayList();
SqlCommand myCommand = conn.CreateCommand();
myCommand.CommandText = ("SELECT SerialNumber from Warranty");
SqlDataReader myReader = myCommand.ExecuteReader();
int count = myReader.FieldCount;

while (myReader.Read())
{
for (int i = 0; i < count; i++)
{
//Loop through Serial Numbers
string result = myReader.GetValue(i).ToString();
//Iterate through Lenovo's Serial Checker 1 by 1
webBrowser1.Document.GetElementById("serialCode").Focus();
webBrowser1.Document.GetElementById("serialCode").InnerText = result;
webBrowser1.Document.GetElementById("warrantySubmit").InvokeMember("Click");
Thread.Sleep(500);
MessageBox.Show("Script Completed");
//Get System Summary Info
foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("div"))
if (el.GetAttribute("className") == "fluid-row firstfluid")
{
var record = el.InnerText;
lenovolist.Add(record);
//MessageBox.Show(record, "System Summary");
}
//Get Base Warranty, Warranty Upgrade, and Priority Support
foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("div"))
if (el.GetAttribute("className") == "fluid-row Borderfluid")
{
var record1 = el.InnerText;
lenovolist.Add(record1);
MessageBox.Show(record1, "Base Warranty, Warranty Upgrade, Priority Support");
}
}
}
foreach (var items in lenovolist)
{
MessageBox.Show(items.ToString());
}

我的数据库中有大约 300~ 行。

起初,我考虑将解析后的 H​​TML 存储在数组列表中,以便与数据库进行比较,但是 - 我现在需要将解析后的信息存储到数据库中(除非日期/状态不同)

提前感谢您提供的任何帮助

最佳答案

我认为这里存在与如何处理数据相关的困惑:

1)数据属于数据层(在您的情况下是MySql服务器),并且几乎应该始终仅存储数据,而不是与表示相关的信息

2)Html代码属于表示层(馈送到浏览器以显示信息)

好的,理论已经足够了。对于您的情况:

1) 为从网络获取的数据定义一个表。例如。

网络数据

ProductId INT
TheDate DATE
SerialCode VARCHAR(128)

2) 解析 Html 文件并在插入 WebData 表之前转换数据。日期可以使用 DateTime.Parse 进行解析, DateTime.TryParse或确切的对应物 - DateTime.ParseExactDateTime.TryParseExact (我推荐最后一个)。

3)您可以发出如下所示的选择( DateDiff 用于检查该时间跨度)

SELECT (CASE WHEN DATEDIFF(W.TheDate, P.EndDate) > 7 THEN 0 ELSE 1 END) AS IsActive, <other info here>
FROM Product P
INNER JOIN WebData W ON W.ProductId = P.ProductId

当然,这可以转化为更新来维护状态

关于c# - 如何将解析后的 H​​TML 存储到数据库中并比较数据库中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35775035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com