【发布时间】:2016-03-04 05:12:34
【问题描述】:
我的数据库有如下字段: ID(nvarchar),开始日期(日期),结束日期(日期),状态(位)
我目前正在从网站解析 HTML,以便比较 2 个值(1 个来自本地数据库,另一个来自网站)以确定它们是否相同。如果它们是相同的值 - 完美。但是,如果日期或状态相差超过 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~ 行。
起初我考虑将解析后的 HTML 存储在数组列表中以便与数据库进行比较 - 我现在需要将解析后的信息存储到数据库中(除非日期/状态不同)
在此先感谢您提供的任何帮助
【问题讨论】:
-
目前还不清楚你到底卡在哪里。理想情况下,您将构建一个代表数据的一个“对象”(少数值)的类。该类将包含比较它们的逻辑。根据您在数据库中的内容构造一个类的实例,根据您在 HTML 中的内容构造另一个实例,然后比较该类的两个实例。看来您可能过于复杂了。
-
你能告诉我一个比较它们的逻辑示例吗?我不太确定如何,我似乎无法找到可靠的资源
-
嗯,你已经描述了一些逻辑:
"if the dates or status are different by over 7 days or Status shows Inactive instead of Active"你是在问如何比较两个DateTime值来查看它们是否相隔超过 7 天?如何比较两个字符串值以查看它们是否不同?老实说,目前还不清楚问题是什么。 -
很抱歉没有解释,但对他们俩都是。我不知道如何处理它。例如,我数据库中的日期是 DD/MM/YYYY,其中我解析的 HTML 字符串是 YYYY/MM/DD。这个问题是我不知道如何将我解析的字符串分开?如何分离我解析的字符串并将其与相应的数据库对应项进行比较? ---- 在字符串中有 6 个关键日期,但我不知道如何将它们与数据库中的 6 个日期进行比较
-
你不会“把它拆开”。您将这两个值都转换为
DateTime对象并比较这些对象。您可以使用>、<和==等运算符来比较值。
标签: c# html mysql parsing compare