Click here to Skip to main content
15,895,142 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more: , +
How to pass a array list from c# to store procedure in sql server and then insert need to be perform based on the array list count.
Posted
Comments
Gihan Liyanage 19-Sep-14 1:57am    
Arry List are very archaic.. Why do you want to use array lists ?

First you should create a data type in database
//help
SQL
CREATE TYPE TYPE_NAME AS TABLE
(
PARAM1	CHAR(10),
PARAM1	CHAR(10),
PARAM1	CHAR(10),
PARAM1	CHAR(10),
PARAM1	CHAR(10)
)



//in C# you can use this TYPE Like

C#
DataTable dt = new DataTable();

                       dt.Columns.Add("PARAM1");
                       dt.Columns.Add("PARAM2");
                       dt.Columns.Add("PARAM3");
                       dt.Columns.Add("PARAM4");
                       dt.Columns.Add("PARAM5");




                       DataRow dr;

                       foreach (String lp in anyListORArray)
                       {
                           dr = dt.NewRow();

                           dr["PARAM1"] = lp.PARAM1;
                           dr["PARAM2"] = lp.PARAM2;
                           dr["PARAM3"] = lp.PARAM3;
                           dr["PARAM4"] = lp.PARAM4;
                           dr["PARAM5"] = lp.PARAM5;

                           dt.Rows.Add(dr);
                       }



                       if (anyListORArray.Count == dt.Rows.Count)
                       {

                        using (var conn = new SqlConnection("myconnectionstring"))
               {
                           using (SqlCommand cmd = new SqlCommand("PROCEDURE_Name",conn ))
                           {
                               cmd.CommandType = CommandType.StoredProcedure;


                               cmd.Parameters.AddWithValue("@Data", dt);


                               scon.Open();

                               cmd.ExecuteNonQuery();
                           }
           }
}







use this type in Procedure
//help
SQL
ALTER  PROCEDURE PROCEDURE_Name
(
@Data			[dbo].[TYPE_NAME] ReadOnly
)
AS

DECLARE
@PARAM1	CHAR(10),
@PARAM2	CHAR(10),
@PARAM3	CHAR(10),
@PARAM4	CHAR(10),
@PARAM5	CHAR(10);

--useing Cursor you can use this table or arry 
DECLARE @Cur CURSOR
SET @Cur = CURSOR FOR
   SELECT *
      FROM @Data
	
   OPEN @Cur 
	FETCH NEXT FROM @Cur INTO @PARAM1,@PARAM2,@PARAM3,@PARAM4,@PARAM5
 
       INSERT INTO TABLE_NAME
       VALUES
       (@PARAM1,@PARAM2,@PARAM3,@PARAM4,@PARAM5)
	 
   	WHILE @@FETCH_STATUS = 0
	BEGIN
	

		
	FETCH NEXT FROM @Cur INTO  @PARAM1,@PARAM2,@PARAM3,@PARAM4,@PARAM5
   	END
	
   CLOSE @Cur
  DEALLOCATE @Cur
	
	
   
END
GO
 
Share this answer
 
v6
 
Share this answer
 
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900