2014-11-21 130 views
0

我正在調用通知程序,同時執行sqlbulkcopy。截至目前,我只打印寫入數據庫的行數。我想打印其他參數,如數據庫名稱,當前時間戳等。有人可以讓我知道如何做到這一點。如何將更多參數傳遞給Sqlbulkcopy notifyafter

+0

如果引用SqlRowsCopiedEvent,則沒有其他信息事件引用:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlrowscopiedeventargs(v=vs.110) .aspx – rene 2014-11-21 13:49:16

+0

您無法將更多數據傳遞給事件處理程序。你將不得不在你的課堂/方法的內部處理事件,並在那裏引發你需要額外細節的自定義事件。 – Rhumborl 2014-11-21 13:53:15

+0

基本上我想調用一個常用的方法,它將文件名,加載的numberofrows,狀態作爲參數,並更新一個公共表,我們跟蹤加載到數據庫中的行數以及其狀態爲時間戳的處理... SqlRowsCopied通知程序需要2參數一作爲對象另一個作爲eventargument .. eventargument不能使用..是否有可能傳遞額外的信息作爲第一個參數作爲對象? – ABCDEFG 2014-11-22 15:34:12

回答

0

你不能給事件處理提供論據,但是你可以隨意使用捕捉儘可能多的本地信息的委託:通過在方法包裝它

using (var bulkCopy = new SqlBulkCopy(...)) { 
    string database = "myDatabase"; 
    bulkCopy.SqlRowsCopied += (o, e) => { 
     Console.WriteLine(
      "Time: {0}, database: {1}, rows copied: {2}", 
      DateTime.Now, database, e.RowsCopied 
     ); 
    }; 
    bulkCopy.WriteToServer(...); 
} 

可以使這個通用的,使用方法參數而不是局部變量。您也可以自行換行SqlBulkCopy,並使用自定義EventArgs創建自己的活動,但對於您添加的信息來說,這似乎不值得。