2014-05-14 52 views
0

我正在做一些類的最終項目,並且在大多數測試案例中,我會被要求將大量記錄插入到數據庫中,記錄將會給出在一個xml文件中。我的問題是我怎麼能插入所有這些記錄從XML到數據庫中,因爲我已經嘗試過沒有奏效。這是我到目前爲止已經完成:如何在c#中的foreach循環內插入數據到sql server中#

我從存儲過程執行插入(它確實是最終使我不能做一個批量插入要求)

C#

XmlDocument xmldoc = new XmlDocument(); 
xmldoc.LoadXml(IdeaEvaluation.Properties.Resources.Cities); 

XmlNode root = xmldoc.DocumentElement; 
XmlNodeList nodeList = root.SelectNodes("/Ciudades/Ciudad"); 

string nombre = string.Empty; 
string codigo_postal = string.Empty; 

foreach (XmlNode node in nodeList) 
{ 
    nombre = node["nombre"].InnerText; 
    codigo_postal = node["codigo_postal"].InnerText; 

    try 
    { 
     using (SqlCommand cmd = new SqlCommand("dbo.CreateCiudad", conn) { CommandType = CommandType.StoredProcedure }) 
     { 
      cmd.Parameters.Add("@nombre", SqlDbType.VarChar, 10).Value = nombre; 
      cmd.Parameters.Add("@codigo_postal", SqlDbType.VarChar, 6).Value = codigo_postal; 
      string text = cmd.CommandText; 
      cmd.ExecuteNonQuery(); 
     } 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.ToString()); 
    } 
} 

一切工作正常,直到它得到執行插入,然後我不知道會發生什麼,它永遠不會插入一行或任何東西..我相信這是因爲它沒有時間做插入作爲循環繼續循環非常快。

這裏的存儲過程

CREATE PROC Createciudad(@nombre  VARCHAR, 
         @codigo_postal VARCHAR) 
AS 
    BEGIN 
     IF NOT EXISTS(SELECT * 
        FROM dbo.codigo_postal 
        WHERE codigo_postal = @codigo_postal) 
     INSERT INTO dbo.codigo_postal 
        (codigo_postal) 
     VALUES  (@codigo_postal); 

     IF NOT EXISTS(SELECT * 
        FROM dbo.ciudad 
        WHERE nombre = @nombre 
          AND codigo_postal = @codigo_postal) 
     INSERT INTO dbo.ciudad 
        (nombre, 
        codigo_postal) 
     VALUES  (@nombre, 
        @codigo_postal); 
    END; 

如何foreach循環中插入數據或者我應該用什麼循環或方法的其他種類的任何想法?

+1

你不打開連接 –

+0

你已經打開的數據庫連接的默認長度是多少? – JsonStatham

+0

獲取錯誤?如果是這樣,哪個?它不需要做一個'太快循環'。只有當循環中的代碼完成時纔會完成下一次迭代。 – Abbas

回答

1

您需要定義參數的長度,否則他們會給予1個字符

CREATE PROC Createciudad(@nombre  VARCHAR(50), 
        @codigo_postal VARCHAR(50)) 
+0

作爲兒子,因爲我有機會訪問我的終端我會嘗試定義參數的長度,我會更新這個如果工作,評論和接受爲答案。 – HardCodeStuds

相關問題