Passing XML to Store Procedure in sql



Hello I am Passing xml to the Store Procedure and It is compiling but no row inserted into the database.


My Code



foreach (int item in objDirectory.PhotoId)
{
//roots = roots + "<row DirectoryId='"+objDirectory.DirectoryId+"'PhotoId='" +item+"'CreatedBy='"+"Admin"+"'ModifiedBy='"+"Admin"+"'/>";
roots = roots + "<row DirectoryId= '" + objDirectory.DirectoryId + "' PhotoId='" + item + "' CreatedBy ='" + "Admin" + "' ModifiedBy ='" + "Admin" + "'/>";
}
PhotoIds = string.Format(PhotoIds, roots);
objDirectory.SavePhotoId(PhotoIds);


Save Method



public void SavePhotoId(string PhotoId)
{
SqlTransaction tran = null;

try
{
SqlParameter[] arParams = new SqlParameter[3];
m_objConn = new SqlConnection(m_strConn);
m_objConn.Open();
tran = m_objConn.BeginTransaction();

arParams[0] = new SqlParameter("@PhotoID", PhotoId);
SqlHelper.ExecuteNonQuery(tran, CommandType.StoredProcedure, "InsertUpdatePhotIdInAlbum", arParams);
}

catch (Exception ex)
{
throw ex;
}
finally
{
if (m_objConn.State == ConnectionState.Open)
{
m_objConn.Close();
m_objConn = null;
}
}
}


Store Procedure:



CREATE Procedure [dbo].[InsertUpdatePhotIdInAlbum]


@PhotoID xml=null


As


Begin


set nocount on;


if @PhotoID IS NULL


Begin


Return;


End


Declare @PhotoAlbumDetail


table(AlbumID int,PhotoId int,CreatedBy varchar(50),ModifiedBy varchar(50))


insert into @PhotoAlbumDetail(AlbumID,PhotoID,CreatedBy,ModifiedBy)


select


t.c.value('./@DirectoryId','int')as AlbumID,


t.c.value('./@PhotoId','int')as PhotoID,


t.c.value('./@CreatedBy','varchar(50)')as CreatedBy,


t.c.value('./@ModifiedBy','varchar(50)')as ModifiedBy


from @PhotoID.nodes('/root/row') t(c);


INSERT INTO [dbo].[tbl_PhotoAlbumDetail]


(


AlbumID,


PhotoId,


CreatedBy,


ModifiedBy) SELECT p.AlbumID, p.PhotoId, p.CreatedBy, p.ModifiedBy from @PhotoAlbumDetail p

End


No comments:

Post a Comment