1
public int UpdatePlantContacts(int PlantID, List<string> PlantContacts) 
{ 
    int i = 0; 
    DataTable dt = new DataTable("PlantAreaContact"); 
    dt.Columns.Add("PlantAreaID",System.Type.GetType("System.Int")); 
    dt.Columns.Add("PlantAreaContact", System.Type.GetType("System.String")); 
    dt.Columns.Add("IsAreaHead", Type.GetType("System.Boolean")); 
    dt.Columns.Add("AreaEmailID", Type.GetType("System.String")); 
    dt.Columns.Add("LoginPassword", Type.GetType("System.String")); 
    dt.Columns.Add("SystemPermission", Type.GetType("System.String")); 
    foreach (DataRow dr in dt.Rows) 
    { 
     DataRow newRow = dt.NewRow(); 
     dt.Rows.Add("~/XmlData/PlantAreaContacts"); 
    } 
    StringWriter XMLWriter = new StringWriter(); 
    dt.WriteXml(XMLWriter); 
    System.Xml.Linq.XElement XMLUncertanity = System.Xml.Linq.XElement.Parse(XMLWriter.ToString()); 
    try 
    { 
     i = plcon.UpdatePlantContacts(PlantID, dt); 
    } 
    catch 
    { 
     throw new System.NotImplementedException(); 
    } 
    if (i <= 0) 
    { 
     return 0; 
    } 
    else 
    { 
     return i; 
    } 
} 

这是我BAL的代码,我有XMLDATA在我的我的文件夹中VS2010我想插入在以后的XML数据的数据应插入使用存储过程,下面是我的DAL充分利用XML数据,并使用存储过程和C#插入到现有的表

public int UpdatePlantContacts(int PlantID, DataTable PlantContacts) 
{ 
    try 
    { 
     int result = -1; 
      sqlcmd = fnProcedure("sp_UpdatePlantAreaContacts"); 
      SqlParameter par1 = sqlcmd.Parameters.Add("@PlantAreaID", SqlDbType.Int); 
      par1.Value = PlantID; 
      SqlParameter par2 = sqlcmd.Parameters.Add("@EmployeeID", SqlDbType.Int); 
      par2.Value = 1015; 
      //SqlParameter par3 = sqlcmd.Parameters.Add("@FilePath", SqlDbType.VarChar); 
      //par3.Value = "E:/QONE/P218/ENG/PlantAreaContactsXML.xml"; 
      SqlParameter par4 = sqlcmd.Parameters.Add("@Return", SqlDbType.Int); 
      par4.Direction = ParameterDirection.Output; 
      try 
      { 
       fnOpen(); 
       sqlcmd.ExecuteNonQuery(); 
       result = Convert.ToInt32(sqlcmd.Parameters["@Return"].Value); 
       fnClose(); 
      } 
      catch (Exception) 
      { 
       fnClose(); 
       result = -1; ; 
      } 
      return result; 
      //Conn.Close(); 
      //Conn.Dispose(); 
     } 
     catch (Exception Ex) 
     { 
      CreateErrorLog Err = new CreateErrorLog(); 
      Err.ErrorLog(HttpContext.Current.Server.MapPath("Logs/ErrorLog"), Ex.Message); 
      throw new System.NotImplementedException(); 
     } 
     finally 
     { 
     } 


} 

我的存储过程是低于 ALTER PROCEDURE [DBO]。[SP_PlantcontactUpdate] @PlantAreaID INT, @doc XML

 AS 
    BEGIN 
IF OBJECT_ID('tempdb..##temp') IS NOT NULL 
    DROP TABLE ##temp 

    select * 
    into ##temp from dbo.PlantAreaContact where PlantAreaID= @PlantAreaID 
    begin try 
    delete from dbo.PlantAreaContact where PlantAreaID= @PlantAreaID 

    DECLARE @idoc int 

    EXEC sp_xml_preparedocument @idoc OUTPUT, @doc 
    -- Execute a SELECT statement that uses the OPENXML rowset provider. 
    insert into dbo.PlantAreaContact 
    SELECT @PlantAreaID, * 
    FROM  OPENXML (@idoc, '/DocumentElement/PlantAreaContacts',2) 
     WITH (PlantAreaContact varchar(50),IsAreaHead int,AreaEmailID varchar(50), 
     AreaMobileNumber varchar(25),LoginPassword varbinary(10),SystemPermission varchar(25)) 

end try 

    begin catch 

delete from dbo.PlantAreaContact where PlantAreaID= @PlantAreaID 
insert into dbo.PlantAreaContact select * from ##temp 
drop table ##temp 

RAISERROR ('Failed PlantAreaContact',16,1); 
end catch 



END 

回答

0

您正在尝试为对象dt(它是一个空对象:DataTable dt = new DataTable())操作WriteXml。

你需要写

PlantContacts.WriteXml("filepath"); 

明确如果要求是从我的理解不同

相关问题