Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

.NET:Cách chèn tài liệu XML vào SQL Server

Bạn phải sử dụng SqlParameter, tôi khuyên bạn nên làm như vậy:

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

và SQL sẽ giống như sau:

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

Và vì nút con đầu tiên luôn là nút xml, bạn có thể thay thế mã hóa bằng câu lệnh sau.

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

Tựu chung lại, nó sẽ như thế này:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuỗi làm giá trị mặc định cho một cột

  2. Chuyển danh sách <> sang thủ tục lưu trữ SQL

  3. Chọn 30 ngày qua với truy vấn sql

  4. Cập nhật SQL với row_number ()

  5. Đếm các bản ghi cho mỗi tháng trong một năm