White Whale Studio

[ASP] MSSQL 과의 연결 본문

IT Engineering/C#.net

[ASP] MSSQL 과의 연결

glorymind 2013. 12. 31. 13:36
반응형

안녕하세요.

오랜만의 포스팅입니다.

오늘도 저의 기억력의 한계를 잘 알고 있기에 이렇게 포스팅을 합니다.

 

이번에 살펴볼 내용은 ASP와 MSSQL의 연결입니다.

 

구글에서 ASP MSSQL Connection 이렇게 검색해보면

비쥬얼 베이직으로 된 소스를 자주 접하실수 있으셨을 겁니다.

알고보니 C# 기반으로 된 소스를 찾으려면 ASP.Net으로 찾아야 되더군요;;;;;

 

아무튼 제가 성공적으로 수행해낸 방법으로 진행을 해보겠습니다.

아, 우선적으로 테스트를 위한 IIS 서버 구축은 다루지 않겠습니다. 구축과정에서 발생하는 자잘한 오류들은 구글링을 해보시면 쉽게 찾으실수 있으실 겁니다.(이미 전 해결을 해버려서... 다시 오류 찾기가 오히려 귀찮군요;;;)

 

DB는 대충 구축을 해두시구요. 저같은 경우는 테스트용으로 대충 테이블 하나를 만들어뒀습니다.

 

자, 소스를 볼까요.

 

먼저 test.aspx 입니다.

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test.aspx.cs" Inherits="WebApplication1.test" %>

<!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>
        <b>Test Web Form입니다.</b>
        <br />
        <br />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <asp:GridView ID="GridView1" runat="server">
        </asp:GridView>

       
    </div>
    </form>
</body>
</html>

소스를 보시면 텍스트 박스와 라벨, 그리드뷰로 구성이 됩니다.

 

 

이렇게 구성을 해두시구요.

 

다음으로는 내부 소스인 test.aspx.cs 를 보시겠습니다.

겉으로 드러나는 소스가 아니라는것은 아시겠죠?

 

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
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;

namespace WebApplication1
{
    public partial class test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Label1.Text = PageNo;

            if (PageNo == "111")
            {
                SqlConnection objCon = new SqlConnection();
                objCon.ConnectionString = "Data Source=SiteUrl,PortNO;Initial Catalog=Database Name;User ID=userid;Password=1111";

                objCon.Open();
                SqlCommand objCmd = new SqlCommand();
                objCmd.Connection = objCon;
                objCmd.CommandText = "select * from Table_1";
                objCmd.CommandType = CommandType.Text;
                SqlDataReader objDr = objCmd.ExecuteReader();
                this.GridView1.DataSource = objDr;
                this.GridView1.DataBind();

                objCon.Close();
            }
        }

 

        // 아래쪽 소스는 URL로 들어오는 파라미터를 처리하는 부분입니다.

        protected string PageNo
        {
            get { return (Request.QueryString["pageno"] == null ? "1" : Request.QueryString["pageno"].ToString()); }
        }

    }
}

 

Import 하시는 부분들은 잘챙겨주셔야합니다. 기본적으로있는 부분 + DB 연결부분 및 보안이나 데이터 당겨오는 부분은 전 귀찮아서 그냥 복사했습니다.

 

우선 DB 연결에서 가장 중요한 부분은 역시 ConnectString 부분이겠죠. 위의 양식에 맞춰서 입력해주시면 됩니다.

위의 소스 같은 경우는 URL로부터 파라미터를 받아서 처리하는 방식을 사용합니다. 비밀번호를 체크하듯이 Pageno가 111인 경우에만 데이터베이스에 접근해서 데이터를 읽도록 처리하였죠.

이와 같은 방식을 사용해서 입맛에 맞게 처리하시면 되겠습니다.

 

 

URL에서 파라미터를 받는 방식은 OPEN API를 자주 사용해보신 분들은 아시겠지만 다음과 같이 사용하시면 됩니다.

http://localhost/test.aspx?pageno=111&parameter2=234

 

파라미터가 여러개인 경우에는 '&' 기호로 구분하시면 됩니다.

 

최종적으로 제대로된 연결이 진행되었다면 다음과 같이 출력이 될겁니다.

 

 

 

test.aspx.cs 소스에서 SqlDataReader가 아닌 SqlDataAdapter를 사용하셔도 됩니다.

DB를 조금이나마 만져보신분들은 아시겠지만 DataSet에 넣어서 사용하면 각 Row를 건드릴수 있다는 것을 아실 겁니다.

 

소스는 비슷하구요 SqlDataReader 부분대신에

 

                DataSet ds = new DataSet();
                SqlDataAdapter ad = new SqlDataAdapter();
                ad.SelectCommand = objCmd;
                ad.Fill(ds);

                DataTable dt = ds.Tables[0];
                DataRow dr = dt.Rows[0];
                string dd = dr["col2"].ToString();
                Label1.Text = dd;

 

와 같은 방식으로 사용하시면되겠습니다.

 

 

 

 

 

 

반응형
Comments