How to insert data from gridview to database?
<p>in web application, i have a gridview in that each row contain 3 textboxes and gridview contain 127 rows. I have to insert the data of each textbox into database, for this i created a data table and i collect the data of each textbox into  that data table and convert the data table into xml form, then inserted into database, but it is giving performence issue[infact it is giving time out exeception], is there any good process to insert the data into database. thank you.</p>

<pre><code>        CREATE procedure [dbo].[USP_RollPlan_InsertProducts](@xmldata xml)                  
    as                  
    begin      
    declare @rollingplainid int      
    declare @xproductcode varchar(30)    
    declare @xQantity1 decimal    
    declare @xRollplanyear int    
    declare @xRollplanmonthYear date    
    declare @xempid varchar(8)    
    declare @xsession varchar(60)    
    declare @xcandflocation int    

    SELECT                         
    cast(convert(nvarchar(max),colx.query('data(productcode)')) as varchar(30)) as xproductcode,                        
    cast(convert(nvarchar(max),colx.query('data(Qantity1)')) as decimal) as xQantity1,    
    cast(convert(nvarchar(max),colx.query('data(Rollplanyear)')) as int) as xRollplanyear,    
    cast(convert(nvarchar(max),colx.query('data(RollplanmonthYear)')) as date) as xRollplanmonthYear,    
    cast(convert(nvarchar(max),colx.query('data(empid)')) as varchar(8)) as xempid,    
    cast(convert(nvarchar(max),colx.query('data(session)')) as varchar(60)) as xsession,    
    cast(convert(nvarchar(max),colx.query('data(candflocation)')) as int) as xcandflocation    
    INTo #tmpES FROM @xmldata.nodes('DocumentElement/Mytable') AS Tabx(Colx)     


    declare db_cursor cursor for     

    select  xproductcode,xQantity1,xRollplanyear,xRollplanmonthYear,xempid,xsession,xcandflocation from #tmpES    

    open db_cursor    
    fetch next from db_cursor into @xproductcode,@xQantity1,@xRollplanyear,@xRollplanmonthYear,@xempid,@xsession,@xcandflocation     

    while @@FETCH_STATUS =0    
    begin                           

    select  @rollingplainid = max(rollingplanid) from Tbl_F_Roll_PlanHeader_T where  empid=@xempid            
    if not exists ( select * from  Tbl_F_Roll_PlanDetails_T where CreatedBy =@xempid and ProductCode =@xproductcode and RollingPlanId=@rollingplainid   and RollPlanMonthYear =@xRollplanmonthYear     and CandFLocation =@xcandflocation and Status=1 )    


    begin      

        insert into Tbl_F_Roll_PlanDetails_T(rollingplanid,productcode,rollplanmonthyear,rollplanyear,candflocation,quantity,CreatedBy,CreatedOn,sessionid,status)                  
        values(@rollingplainid ,@xproductcode ,@xRollplanmonthYear ,@xRollplanyear ,@xcandflocation ,@xQantity1,@xempid,GETDATE (),@xsession,1)                  
    end              
    else              
    begin        
        if(@xQantity1 =0)        
        begin        
            delete from Tbl_F_Roll_PlanDetails_T where ProductCode=@xproductcode and RollingPlanId =@rollingplainid and CandFLocation =@xcandflocation and RollPlanMonthYear =@xRollplanmonthYear and RollPlanYear =@xRollplanyear         
        end                   
            update Tbl_F_Roll_PlanDetails_T set quantity=@xQantity1,CreatedOn =GETDATE() where ProductCode =@xproductcode and DATEDIFF (dd, RollPlanMonthYear ,@xRollplanmonthYear)=0 and CandFLocation =@xcandflocation and CreatedBy =@xempid                
        end                 

    fetch next from db_cursor into  @xproductcode,@xQantity1,@xRollplanyear,@xRollplanmonthYear,@xempid,@xsession,@xcandflocation     
    end     
    close db_cursor    
    deallocate db_cursor             
    end  
</code></pre>
