sql >> Database teknologi >  >> RDS >> Sqlserver

.NET:Sådan indsætter du et XML-dokument i SQL Server

Du skal bruge en SqlParameter. Jeg vil anbefale at gøre det sådan:

command.Parameters.Add(
   new SqlParameter("@xml", SqlDbType.Xml) 
       {Value = new SqlXml(new XmlTextReader(xmlToSave.InnerXml
                       , XmlNodeType.Document, null)) })

og SQL'en skal se sådan ud:

String sql = "INSERT INTO "+tableName+" ("+columnName+") VALUES (@xml)";

Og da det første barn altid er xml-noden, kan du erstatte kodningen med følgende sætning.

xmlToSave.FirstChild.InnerText = "version=\"1.0\" encoding=\"UTF-16\"";

Alt i alt ville det se sådan ud:

void SaveXmlToDatabase(DbConnection connection,
      XmlDocument xmlToSave,
      String tableName, String columnName);
{
   String sql = "INSERT INTO "+tableName+" ("+columnName+") VALUES (@xml)";

   using (DbCommand command = connection.CreateCommand())
   {
      xmlToSave.FirstChild.InnerText = "version=\"1.0\" encoding=\"UTF-16\"";             
      command.CommandText = sql;
      command.Parameters.Add(
        new SqlParameter("@xml", SqlDbType.Xml) 
           {Value = new SqlXml(new XmlTextReader(xmlToSave.InnerXml
                       , XmlNodeType.Document, null)) });


      DbTransaction trans = connection.BeginTransaction();
      try
      {
         command.ExecuteNonQuery();
         trans.Commit();
      }
      catch (Exception)
      {
         trans.Rollback();
         throw;
      }
   }
}


  1. Stopord og MySQL boolesk fuldtekst

  2. Få skjult inputværdi fra databasen efter vælg formular

  3. Tegn flere diagrammer med Flot, html, PHP og MySql forespørgsel

  4. RoR Postgresql tidszonegruppe ved ikke at arbejde på Heroku