==> [FrmParameters.aspx]  소스 및 디자인



<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmParameters.aspx.cs" Inherits="FrmParameters" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

   

        <asp:TextBox ID="txtFirst" runat="server"></asp:TextBox>

        ~<asp:TextBox ID="txtSecond" runat="server"></asp:TextBox>

        번 사이의 카테고리 출력<asp:Button ID="btnSelect" runat="server" Text="가져오기"

            Font-Bold="true" ForeColor="Red" Font-Underline="True"

            BackColor="Yellow" BorderColor="Blue" onclick="btnSelect_Click" />

        <br />

        <asp:GridView ID="ctlCategoryList" runat="server">

        </asp:GridView>

   

    </div>

    </form>

</body>

</html>

 










=====================================================================================




==> [FrmParameters.aspx.cs]



using System;

using System.Data;

using System.Data.SqlClient;

using System.Configuration;

 

public partial class FrmParameters : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

 

    }

    protected void btnSelect_Click(object sender, EventArgs e)

    {

        //[1] 변수 선언부

        string first = txtFirst.Text;

        string second = txtSecond.Text;

 

        //[2] 커넥션

        using (SqlConnection con = new SqlConnection(

            ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))

        {

            con.Open();

 

            //[3] 커맨드

            SqlCommand cmd = new SqlCommand();

            cmd.Connection = con;

            cmd.CommandText =

                //"Select * From Categories Where CategoryID Between 1 And 20"; //[1] 직접입력

                //"Select * From Categories Where CategoryID Between " + first //[2]

                //    + " And " + second + "";

                //String.Format(@"

                //    Select * From Categories

                //    Where CategoryID Between {0} And {1}", first, second); //[3]번째 코딩방법  / 웹페이지에서 두번째 입력될 자리(FrmParameters.aspx.cs에서 정수형으로 형식 지정을 안해주었기 때문에(여기서는 "Text"형식으로 문자열을 입력받고 있다.)) 15;Drop Table Message;-- 로 입력해서 SQL Server Market데이터베이스의 "Message"테이블을 삭제시킬수도 있다.(-> SLQ인젝션공격)

                "Select * From Categories Where CategoryID Between @First And @Second"; //[4] 가장추천하는 코딩방법

       

            //[!] 파라미터 추가

            cmd.Parameters.AddWithValue("@First", first); // .NET2.0이상부터 사용하는 코드

            //cmd.Parameters.AddWithValue("@Second", second);

            cmd.Parameters.Add("@Second", System.Data.SqlDbType.Int); // .NET1.X에서 사용하는 코드

            cmd.Parameters["@Second"].Value = second;

 

            //[4] 데이터리더

            SqlDataReader dr = cmd.ExecuteReader();

 

            //[5] 바인딩

            ctlCategoryList.DataSource = dr;

            ctlCategoryList.DataBind();

 

            //[6] 마무리

            dr.Close();

        }

    }

}

 

 

 

 

// SqlCommand.Parameters 속성 - SqlParameterCollection을 가져옵니다.

 

// 속성 값

// Transact-SQL 문이나 지정 프로시저의 매개 변수입니다. 기본값은 빈 컬렉션입니다.

 

 



=====================================================================================




[실행결과]

--> [FrmParameters.aspx.cs]에서 파라미터(->SQL 쿼리문의 "변수"에 해당함.)를 사용(추가)하여 코드를 작성한 후, 아래그림의 웹페이지에서 "2개의 텍스트박스"에 [SQL Server]-[Market]데이터베이스-[dbo.Categories]테이블에 존재하는 알맞은 범위의 값을 입력한다.(여기서는 10과 15를 각각 대입하였다.) 




--> 위의 그림에서 '텍스트박스'에 '10'과 '15'를 각각 대입한 후 "가져오기"버튼을 클릭하면, 아래그림과 같이 [SQL Server]-[Market]데이터베이스-[dbo.Categories]테이블의 "CategoryID"가 10번에서 15번 사이의 데이터가 웹페이지의 "GridView"에 출력되는 것을 볼 수 있다.





Posted by holland14
: