11. 파라미터(Parameters) 사용
.NET프로그래밍/ADO.NET 2009. 9. 25. 11:28 |==> [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"에 출력되는 것을 볼 수 있다.
'.NET프로그래밍 > ADO.NET' 카테고리의 다른 글
13. 입력(Insert문을 넣어서 카테고리 추가하기) (0) | 2009.09.28 |
---|---|
12. DbProviderFactory 클래스 (0) | 2009.09.25 |
10. SqlCommand..::.ExecuteScalar 메서드 (0) | 2009.09.25 |
9. ConfigurationManager.ConnectionStrings 속성(한 곳에다 연결문자열 저장한 것을 불러오는 명령어) (0) | 2009.09.25 |
ADO.NET복습 (0) | 2009.09.25 |