我正在爲自己的網站編寫一個小webcrawler。它似乎工作正常。我瀏覽每個鏈接並檢查它是否屬於我的主頁。如果找到鏈接,它將添加「addSite()」的網站。首先嚐試獲取URl相同的條目,如果沒有任何條目添加URl。否則,如果內容哈希值更改,則會更新它。問題是,即使它存在,它也會添加UR1。即使有足夠的SQL查詢也找不到行
這是我的方法:
private bool addSite(string url, string title, string content)
{
string hash = md5Hash(content);
List<object[]> res = sql.executeReader(string.Format("SELECT `hash` FROM `sites` WHERE `url` = '{0}'", MySqlHelper.EscapeString(url)));
if (res.Count > 0)
{
if (res[0][0].ToString() != hash)
{
sql.executeQuery(string.Format("UPDATE `sites` SET title = '{0}', content = '{1}', hash = '{2}' WHERE url = '{3}'", MySqlHelper.EscapeString(title), MySqlHelper.EscapeString(content), hash, MySqlHelper.EscapeString(url)));
return true;
}
return false;
}
sql.executeQuery(string.Format("INSERT INTO `sites`(url, title, hash, content) VALUES('{0}', '{1}', '{2}', '{3}')", MySqlHelper.EscapeString(url), MySqlHelper.EscapeString(title), hash, MySqlHelper.EscapeString(content)));
Console.WriteLine("Added: " + url);
return true;
}
我希望每個人都可以找到故障。非常感謝你。
你有沒有檢查你的C#代碼生成的sql語句?它是什麼 ?你是否試圖在你的數據庫管理器中執行它? – SidAhmed
如果在SQL Server上。你可以使用sql profiler查看生成的確切查詢。 – soynerdito
非常感謝。這是數據庫設計中的一個錯誤。該網址沒有足夠的空間並被剪下。 – David