上一篇文章 http://mis2000lab.blogspot.tw/2017/02/faq-adonet-parametersql-injection.html

 

網路上找到的其他寫法,為自己做一個筆記

 

        SqlConnection Conn = new SqlConnection("DB連結字串");

        SqlDataReader dr = null;

        SqlCommand cmd = new SqlCommand("select * from 資料表test where id = @id", Conn);        

 

            //== 參數!! ============================(start)

            cmd.Parameters.Clear();

 

            List paralist = new List();

            paralist.Add(new SqlParameter("@id", "輸入值")));

 

            //--第一種寫法------------------------------------------------

            //paralist.Add(new SqlParameter("@p1", value1));    //如果要加入多個參數,怎麼辦??

            //paralist.Add(new SqlParameter("@p2", value2));

 

            cmd.Parameters.AddRange(paralist.ToArray());   

            // 把「陣列」值,批次加入參數裡面

 

 

            ////--第二種寫法------------------------------------------------

            //cmd.Parameters.AddRange(new SqlParameter[]

            //{

            //    new SqlParameter("@p1", value1),

            //    new SqlParameter("@p2", value2)

            //});

 

 

            ////--第三種寫法------------------------------------------------

            //SqlParameterCollection paraCollection = cmd.Parameters;

            //foreach (SqlParameter para in paralist)  

            //{

            //    paraCollection.Add(para);

            //}    

       

 

            ////--第四種寫法------------------------------------------------

            //**** 有時method裡,引數數量並不是固定的,就可以用params來宣告 ****

 

            //== 參數!! ============================(end)

 

 

 

        try   {  

            Conn.Open();   //== 第一,連結資料庫。

            dr = cmd.ExecuteReader();    //== 第二,執行SQL指令,取出資料

 

            GridView1.DataSource = dr;   //==第三,自由發揮,把執行後的結果呈現到畫面上。

            GridView1.DataBind();    //--資料繫結

        }

        catch (Exception ex)  {  

            //---- 如果程式有錯誤或是例外狀況,將執行這一段

        }

        finally  {

            // == 第四,釋放資源、關閉資料庫的連結。

            if (dr != null)  {

                cmd.Cancel();

                dr.Close();

            }

            if (Conn.State == ConnectionState.Open)  {

                Conn.Close();

                Conn.Dispose(); //---- 一開始宣告有用到 New的,最後必須以 .Dispose()結束

            }

        }

arrow
arrow

    MIS2000 Lab 發表在 痞客邦 留言(0) 人氣()