블로그 이미지
래곤
study 관련자료를 한곳으로 자기 개발 목적으로 재태크 재무 관리 목적으로 일상생활의 팁을 공유 하기 위하여 블로그를 개설 하였습니다.

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
반응형

Category

Recent Post

Recent Comment

Archive

2009. 9. 25. 11:40 .Net Project/ADO.NET 3.5
반응형

.ExecuteNonQuery() : 반환값이 없는 명령어 실행 
                                Select문 이외의 명령어 실행시 사용
.ExecuteReader() : 다중 레코드(한개 이상의 레코드 반환)
.ExecuteScalar() : 집계함수(AVG, Count)의 결과값 받고자 할 때,
 즉, 단일 값 반환 
 
                                         ↕

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;


public partial class FrmConfigurationManager : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //Web.Config 파일에 있는 <connectionStrings> 섹션에 있는 값 가져오기
        string str = ConfigurationManager.ConnectionStrings
                        ["ConnectionString"].ConnectionString;

        Response.Write(str + "<br />");
    }
}


using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public partial class FrmExecuteScalar : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        DisplayCategoryCount();
        DisplayProductCount();
    }

    //등록된 상품 캣수
    private void DisplayProductCount()
    {
        SqlConnection con = new SqlConnection
                         (ConfigurationManager.ConnectionStrings
                           ["ConnectionString"].ConnectionString);
        con.Open();

        SqlCommand cmd = new SqlCommand
                                  ("Select Count(*) From Products", con);

        //스칼라값 실행
        this.lblProductCount.Text = cmd.ExecuteScalar().ToString(); 
        con.Close();
        
    }

    //카테고리 상품 갯수
    private void DisplayCategoryCount()
    {
        //DisplayProductCount();
        SqlConnection conn = new SqlConnection
                                        (ConfigurationManager.ConnectionStrings
                                        ["ConnectionString"].ConnectionString);
        conn.Open();

        SqlCommand cmdd = new SqlCommand
                                    ("Select Count(*) From Categories", conn);

        //스칼라값 실행
        this.lblCategoryCount.Text = cmdd.ExecuteScalar().ToString(); 
        conn.Close();       
    }
--다른 방식----------------------------------------------------------
  using (SqlConnection con = new SqlConnection
            (ConfigurationManager.ConnectionStrings
             ["ConnectionString"].ConnectionString))
        {

            con.Open();
            SqlCommand cmd = new SqlCommand(
                "Select Count(*) As Cnt From Categories",con);

            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                lblCategoryCount.Text = dr["Cnt"].ToString(); //카운터 출력
            }
        }


--파라미터 Prarameters 사용

 

                                                ↕

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

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 =
      //1. "Select *From Categories Where CategoryID Between 1 And 20";

     //웹 텍스트박스에 15;Drop Table Message;-- 입력하면 테이블 삭제(위험)
     //이와 같은 상황 보완하기 위해 3번 사용 
    
     //2. String.Format(@" Select *From Categories Where CategoryID 
     // Between {0} And {1}", first, second);
    
     // 2번 같은 문을 사용하면, 웹사이트 상에서 어느 누구나 테이블 삭제 가능
     // 그러므로 아래 3번과 같은 방식을 사용하여, 삭제 할 수 없도록 작성

            //3. 마지막 제일 좋은 방식
            "Select *From Categories Where CategoryID BetWeen
                                @First And @Second";
            //파라미터 추가
            cmd.Parameters.AddWithValue("@First", first); //Net 2.0
            cmd.Parameters.AddWithValue("@Second", second);

            //--------------------------------------------//
            //cmd.Parameters.Add("@First",
                      System.Data.SqlDbType.Int); //Net 1.X]
            //cmd.Parameters["@First"].Value = second;
            //--------------------------------------------//

            // 생략 가능 cmd.CommandType = CommandType.Text;

            //[4] 데이터 리더
            SqlDataReader dr = cmd.ExecuteReader();
           
            //[5] 바인딩

            ctlCategoryList.DataSource = dr;
            ctlCategoryList.DataBind();
         
            //[6] 마무리
            dr.Close();
        }
    }
}


반응형
posted by 래곤