2016-04-07 4 views
1

Ich habe XML in Klassen deserialisiert, das funktioniert wie es sollte. Es gibt Listen- jeden XML-TagEinfügen von XML-Tags in Datenbankspalten

Dieses zum Beispiel druckt alle Werte des Namensschild:

var First = deserializedList.Select(item => item.Personpost.Namn.Fornamn).ToList(); 
       foreach (var o in First) 
       { 
        Console.WriteLine("Namn: " + o); 
       } 

Jetzt frage ich mich, ob ich in der Lage bin, das Objekt in eine Datenbanktabelle einzufügen als eine Spalte?

So ähnlich?

string connetionString = null; 
      SqlConnection connection; 
      SqlCommand command; 
      SqlDataAdapter adpter = new SqlDataAdapter(); 
      DataSet ds = new DataSet(); 
      XmlReader xmlFile; 
      string sql = null; 


      connetionString = "Data Source=tsrv2062;Initial Catalog=Bums;User ID=*****;Password=*****"; 

      connection = new SqlConnection(connetionString); 

      xmlFile = XmlReader.Create("navetout.xml", new XmlReaderSettings()); 
      ds.ReadXml(xmlFile); 


      connection.Open(); 



      SqlCommand command1 = new SqlCommand("INSERT INTO Seamen(FirstName) values(@FirstName)", connection); 
      command1.Parameters.AddWithValue("@FirstName", First); 

      command1.ExecuteNonQuery(); 

      connection.Close(); 
      Console.WriteLine("Done"); 

Ich habe versucht, aber bekam Fehler:

There is no mapping from object type System.Collections.Generic.List`1 [[System.String, mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089]] to a built-in type of a known provider.

Antwort

1

Sie nicht List<string> als Befehlsparameter passieren kann. Wenn Sie alle Werte aus dieser Liste einfügen möchten, sollten Sie alle Elemente in der Liste First durchlaufen (ähnlich wie bei Ihrem ersten Beispiel) und Werte einfügen.

c/p Ihres Codes:

xmlFile = XmlReader.Create("navetout.xml", new XmlReaderSettings()); 


ds.ReadXml(xmlFile); 


connection.Open(); 

SqlCommand command1 = new SqlCommand("INSERT INTO Seamen(FirstName) values(@FirstName)", connection); 

foreach (var name in First) 
{ 
    command1.Parameters.Clear(); 
    command1.Parameters.AddWithValue("@FirstName", name); 

    command1.ExecuteNonQuery(); 
} 

connection.Close(); 
Console.WriteLine("Done"); 

Ich habe es nicht getestet, aber das sollte Ihr Problem lösen.

+0

Danke, aber was, wenn ich mehrere Spalten gleichzeitig einfügen möchte? Gibt es eine Möglichkeit, jede Spalte in dieser Schleife zu wiederholen? –

Verwandte Themen