2016-12-24 33 views
1

我遵循this article將值插入到SQL Server中。但我有一個大字典(關鍵值對'Column NameColumn Values')大約100個項目,我想插入SQL服務器。使用存儲過程在MS-SQL Server中插入大型字典

有沒有什麼辦法可以直接插入數據庫與此字典?

+0

你想excel在c#中上傳? –

+0

在sql server中導入數據? –

+0

我不清楚你是否需要從應用程序執行此操作,或者只需要將此數據導入到SQL中,並且可以從命令提示符/管理工作室執行此操作。此外,您已將此標記爲mysql和sql-server,但在標題中列出了MS-SQL(與文章相對應)。請說明您正在使用哪個數據庫。 – pstrjds

回答

0

這是一個簡單的方法來做到這一點。 myDictionary具有關鍵值對。

SqlConnection sqlConn = new SqlConnection("[Your Connection String]"); 
SqlCommand sqlcomm = new SqlCommand("[Your SP name]", sqlConn); 
sqlcomm.CommandType = CommandType.StoredProcedure; 
foreach (KeyValuePair<string, object> itm in myDictionary) 
{ 
    sqlcomm.Parameters.AddWithValue(itm.Key, itm.Value); 
} 
sqlcomm.CommandText = spName; 

sqlConn.Open(); 
sqlcomm.ExecuteNonQuery(); 
1

Here你有一個類似的問題,回答一個關於如何將字典傳遞給存儲過程的例子。但作爲字典的100個項目的大小,對我來說似乎並不「大」。也許你會確定調用100次簡單的存儲過程,每次只插入1個項目。

或者根本沒有任何存儲過程,並直接從C#代碼插入,或者使用SqlCommands並將「INSERT」語句作爲命令或使用SqlBulkCopy。

+0

嗨@Jorge Y.謝謝你的回答。從你提到的類似問題,是否有必要將Dictionary轉換爲DataTable?我們不能只使用Dictionary而不轉換爲DataTable? –

+0

嗨@Jorge Y.我不能在Insert語句中使用簡單的SqlCommands。必須使用存儲過程插入。 –

+1

恐怕你必須將字典轉換爲別的東西才能將它傳遞給存儲過程[這次使用數據表格的另一個例子](http://stackoverflow.com/questions/11102358/how-to-pass-一個陣列 - 進入 - 一個-SQL服務器存儲的過程)。在那個鏈接中,還有其他方法,比如使用XML,但對我來說,DataTable對象看起來更簡單。再次,如果不需要在一個過程調用中插入所有的字典,我會爲每個字典元素調用1次。 –

相關問題