PDA

View Full Version : insert array to sql



mandanim
چهارشنبه 22 بهمن 1393, 17:38 عصر
سلام خدمت تمام دوستان عزیزم که حتی سر زدنتون هم باعث دلگرمیه
من میتونم یک آرایه رو یکجا به دیتا بیس بفرستم
بدون اینکه هر عنصر رو تک تک بفرستم

بیتا حکمت
چهارشنبه 22 بهمن 1393, 17:58 عصر
من متوجه نشدم ! الان شما سوال دارین که چطوری آرایه در دیتابیس ذخیره میشه یا اینکه میخواین آموزش بدین ؟
اگر سوال هست ، چه نوع آرایه ای رو میخواین در چه فیلدی ذخیره کنید ؟
بیشتر توضیح بدین تا دوستانی که می تونن ، راحت تر کمک کنن

plus
چهارشنبه 22 بهمن 1393, 18:48 عصر
به کجا میخواین بفرستید. اگه به Stored Procedure میخواین ارسال کنید، اینجا (http://stackoverflow.com/questions/11102358/how-to-pass-an-array-into-a-sql-server-stored-procedure) رو بررسی کنید.

mandanim
پنج شنبه 23 بهمن 1393, 01:58 صبح
سلام
ممنون
سئوالی بود
آیا می شود آرایه را به صورت یکجا به sql فرستاد و insert کرد که جواب به اینصورت شد
ممنون از Plus

منبع :

http://stackoverflow.com/questions/11102358/how-to-pass-an-array-into-a-sql-server-stored-procedure





Open the Query Designer
Copy Paste the Following code as it is,it will create the Function which convert the String to Int



CREATE FUNCTION dbo.SplitInts
(
@List VARCHAR(MAX),
@Delimiter VARCHAR(255)
)
RETURNS TABLE
AS
RETURN ( SELECT Item = CONVERT(INT, Item) FROM
( SELECT Item = x.i.value('(./text())[1]', 'varchar(max)')
FROM ( SELECT [XML] = CONVERT(XML, '<i>'
+ REPLACE(@List, @Delimiter, '</i><i>') + '</i>').query('.')
) AS a CROSS APPLY [XML].nodes('i') AS x(i) ) AS y
WHERE Item IS NOT NULL
);
GO





Create the Following stored procedure



CREATE PROCEDURE dbo.sp_DeleteMultipleId
@List VARCHAR(MAX)
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM TableName WHERE Id IN( SELECT Id = Item FROM dbo.SplitInts(@List, ','));
END
GO





Execute this SP Using exec sp_DeleteId '1,2,3,12' this is a string of Id's which you want to delete,

You convert your array to string in C# and pass it as a Stored Procedure parameter




int[] intarray = { 1, 2, 3, 4, 5 };
string[] result = intarray.Select(x=>x.ToString()).ToArray();



SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandText = "sp_DeleteMultipleId";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@Id",SqlDbType.VARCHAR).Value=result ;