我有一些代碼,在程序生命的最後,將6個不同列表的全部內容上傳到數據庫中。問題是,它們是平行的列表,每個列表中大約有14,000個項目,我必須針對每個單獨的項目運行Insert查詢。這需要很長時間,有沒有更快的方法來做到這一點?下面是相關的代碼示例:更快上傳到數據庫
public void uploadContent()
{
var cs = Properties.Settings.Default.Database;
SqlConnection dataConnection = new SqlConnection(cs);
dataConnection.Open();
for (int i = 0; i < urlList.Count; i++)
{
SqlCommand dataCommand = new SqlCommand(Properties.Settings.Default.CommandString, dataConnection);
try
{
dataCommand.Parameters.AddWithValue("@user", userList[i]);
dataCommand.Parameters.AddWithValue("@computer", computerList[i]);
dataCommand.Parameters.AddWithValue("@date", timestampList[i]);
dataCommand.Parameters.AddWithValue("@itemName", domainList[i]);
dataCommand.Parameters.AddWithValue("@itemDetails", urlList[i]);
dataCommand.Parameters.AddWithValue("@timesUsed", hitsList[i]);
dataCommand.ExecuteNonQuery();
}
catch (Exception e)
{
using (StreamWriter sw = File.AppendText("errorLog.log"))
{
sw.WriteLine(e);
}
}
}
dataConnection.Close();
}
這裏是命令串代碼是從配置文件中拉:外
INSERT dbo.InternetUsage VALUES (@user, @computer, @date, @itemName, @itemDetails, @timesUsed)
我之前已經生成了XML,上傳到了一個獲取XML並使用服務器端XML查詢將存儲節點處理成錶行的sproc。意味着它只是一個調用,並且服務器執行所有數千行的處理。 – Lloyd
你正在使用哪個數據庫,通常你會想要在一個命令中運行多個插入。例如,請看這篇文章:http://stackoverflow.com/questions/2624713/how-do-i-insert-multiple-rows-without-repeating-the-insert-into-dbo-blah-part – Simon
@Simon我會給那一槍。我沒有考慮這樣做。謝謝。 –