18 October 2013

จับข้อมูลยัดใส่ Stored Procedures

[ย้ายบทความจาก Gushared.com]
    สวัสดีครับ ครั้งที่แล้วผมได้เสนอบทความเกี่ยวกับตัวอย่างการใช้งาน Stored Procedures ไปแล้วนะครับ ซึ่งจะแสดงให้เห็นเกี่ยวกับการสร้าง การเรียกใช้ Stored Procedures แบบง๊ายยยยยยยย ฝุดๆ เล๊ยยยย
    แต่มาบทความนี้จะเป็นตัวอย่างในการส่งข้อมูลไปยัง Stored Procedures เพื่ออะไรบางอย่าง เช่น เพิ่มข้อมูลลงดาต้าเบสหรืออาจจะเป็นการประมวลผลอื่นๆ และตัวอย่างนี้ก็คือการส่งข้อมูลเพื่อทำการเพิ่มข้อมูลลงดาต้าเบส โดยแบ่งเป็น 2 ส่วน ดังนี้

ส่วนที่ 1 : การสร้าง Stored Procedures สำหรับ Insert ข้อมูลลงดาต้าเบส
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE addFruits
        -- Ex.การสร้าง parameter ชื่อ paramFruit type nvarchar (ต้องมี @ นำหน้านะจ๊ะ)
        -- Ex.หลายพารามิเตอร์ เช่น @paramFruit nvarchar(50), @paramValues decimal(8,2)
 @paramFruit nvarchar(50)
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;

    -- Insert statements for procedure here
    -- Ex.การเพิ่มข้อมูลลงตาราง Fruits 
 INSERT INTO dbo.Fruits VALUES (@paramFruit)
    -- ปล. สามารถใส่ได้มากกว่าหนึ่ง statement นะครับ
END
GO
ส่วนที่ 2 : การเขียนโค๊ด C# เพื่อใช้งานและส่งข้อมูลไปยัง Stored Procedures
        static void Main(string[] args)
        {
            string[] fruit = new string[] { "Apple", "Mango", "Orange", " Grape", "Tomato" };

            SqlConnection sqlcon = new SqlConnection();
            sqlcon.ConnectionString = "Data Source=MAOLEO;Initial Catalog=Gushared;Integrated Security=True";

            sqlcon.Open();
            for (int i = 0; i < fruit.Count(); i++)
            {
                // SQL Command ใส่เป็นชื่อ Stored Procedures ที่สร้างไว้
                SqlCommand mycom = new SqlCommand("addFruits", sqlcon);
                // กำหนดว่า SqlCommand เป็นประเภท StoredProcedure
                mycom.CommandType = CommandType.StoredProcedure;
                // ส่งข้อมูลโดย Parameters.Add("ชื่อParameter", ข้อมูลที่ต้องการส่ง)
                mycom.Parameters.Add("@paramFruit", fruit[i]);
                mycom.ExecuteNonQuery();
            }
            sqlcon.Close();
        }
ผลลัพธ์