- 로컬에서 잡히지 않은 에러를 원격으로 접속해서 해결

- 운영서버에서 디버깅 하는 방법은 권장하지 않으므로, 로컬에서 원격 운영 서버에 접속해서 에러를 해결 - 프로세스 연결

- Remote Debbugging Monitor (msvsmon.exe)

- Visual Studio에서 디버그 - 프로세스에 연결 - 컴퓨터 찾아보기


 

'.NET프로그래밍 > ASP.NET 3.5 SP1' 카테고리의 다른 글

FrmApplication  (0) 2009.10.20
상태관리(State Management)  (0) 2009.10.20
HttpContext 클래스  (0) 2009.10.20
Trace(추적)개체  (0) 2009.10.20
WebDataControl - Repeater 컨트롤(데이터 출력 컨트롤)  (0) 2009.10.19
Posted by holland14
:

* 컴포넌트 레벨에서 출력할 때 쓰인다.


* 클래스라이브러리나 애플리케이션 라이브러리에서 사용할 때 쓴다.

 "WebHttpContext"프로젝트(파일)에 App_Code폴더를 만들어서 Msg.cs 클래스 파일을 생성한 후 HttpContext 클래스를 사용하는 코드를 작성한다.





[FrmHttpContext.aspx.cs] 소스코드


using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

 

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

{

    protected void Page_Load(object sender, EventArgs e)

    {

        //[0] 추적 설정

        Trace.IsEnabled = true;

 

        // 화면 출력

        //[1] Page 레벨에서 출력

        Response.Write("안녕<br />");

 

        //[2] Component 레벨 : 클래스(App_Code, *.DLL)레벨

        HttpContext.Current.Response.Write("방가<br />");

        HttpContext context = HttpContext.Current;

        context.Response.Write("또 봐<br />");

 

        //[3] 호출

        Msg.Show();

    }

}

 


------------------------------------------------------------------------------------------------------



[App_Code/Msg.cs] 소스 코드


using System;

using System.Web;

 

public class Msg

{

    public static void Show()

    {

        // Response.Write(), Response.Cookies[]

        HttpContext.Current.Response.Write("컴포넌트 레벨에서 출력<br />");

        HttpContext context = HttpContext.Current;

        context.Response.Cookies["A"].Value = "A";

        context.Response.Cookies["B"].Value = "B";

    }

}

 

 


------------------------------------------------------------------------------------------------------



[실행결과]





Posted by holland14
:


* Trace개체 : 웹 페이지 내에서 사용되는 변수 등의 상태값을 추적(디버깅)
(실제 운영모드에서는 사용하지 않는다, 테스트 모드에서 사용하면 된다.)

- 해당 페이지에만 또는 웹 사이트 전체 또는 로컬 레벨로 추적기능을 줄 수 있다.

- 로컬레벨에서 호출하고자 할 때는 localOnly="true"로 써준다.

<%@ Page Trace = "true" %>로 설정하면 해당 페이지에만 추적 기능을 줄 수 있다.

- 페이지 레벨
  <%@ Page Trace="true" %>

[Default.aspx] 소스코드에서

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs"

    Inherits="_Default" Trace="true" %>

 
- 웹 사이트 레벨() --> web.config파일의 <system.web> 안에 코드를 넣어준다.
  <trace enabled="true" pageOutput="true" localOnly="true" />

<appSettings/>

    <connectionStrings/>

    <system.web>

 

        <!-- 웹 사이트 전체 레벨에서 추적 기능 적용 -->

        <trace enabled="true" pageOutput="true" localOnly="true" />

     

        <!--

            컴파일된 페이지에 디버깅 기호를 삽입하려면

            compilation debug="true"로 설정하십시오. 이렇게

            하면 성능에 영향을 주므로 개발하는 동안에만

            이 값을 true로 설정하십시오.

        -->

        <compilation debug="false">


- Trace.Write() 메서드 : 실행 시점에 추적 결과 리스트 출력

- Trace.IsEnabled 속성 : Trace가 enabled가 true이면, true를 반환

- 웹 사이트 전체에서 Trace 결과값 출력 <> 페이지 하단 출력
-->
http://server/project/trace.axd 요청(웹사이트 전체레벨의 응용 프로그램을 출력할 때 사용, 한 곳에서 모아서 볼 수 있다.)





Posted by holland14
:

* Repeater 컨트롤은 테이블의 형태로 출력할 수 없다.






'도구상자'의 "Repeater"컨트롤 FrmRepeater.aspx의 <div>태그안에 마우스로 "드래그&드롭" --> "Repeater 컨트롤"의 '스마트버튼' 마우스로 클릭 -> "데이터 소스 구성" 마우스로 클릭하여 '마법사' 창을 통해 (SqlDataSource컨트롤에서와 같은 과정으로, 단 "Num"의 Desc(내림차순)로) 데이터베이스에 연결한다.



[FrmRepeater.aspx] 소스코드



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

 

<!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>

   

        리피터 컨트롤 사용 출력<br />

        <br />

       

       

        <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">

            <HeaderTemplate>

                <%= SITE_NAME %><br />  <!-- C#(코드비하인드 페이지) 속성 값을 웹에서 표현해 주고 싶을 때의 식 -->                      

            </HeaderTemplate>

            <ItemTemplate>

                <%# Eval("Name") %><br />   <!-- 데이터베이스의 데이터와 바인딩 할 때의 식 -->

            </ItemTemplate>

            <AlternatingItemTemplate>

                <%# "<a href='View.aspx?Num='" + Eval("Num") + "'>" + Eval("Name") + "</a>" %><br />

            </AlternatingItemTemplate>

            <SeparatorTemplate>

                <hr />

            </SeparatorTemplate>

            <FooterTemplate>

                꼬릿말

            </FooterTemplate>

        </asp:Repeater>

       

        <!-- web.config에 있는 데이터베이스 연결문자열과 읽어올 때의 식 -->

        <asp:SqlDataSource ID="SqlDataSource1" runat="server"

            ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 

            SelectCommand="SELECT * FROM [Memos] ORDER BY [Num] DESC">

        </asp:SqlDataSource>

   

    </div>

    </form>

</body>

</html>

 





-------------------------------------------------------------------------------------





[FrmRepeater.aspx.cs] 소스코드


using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

 

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

{

    public string SITE_NAME { get; set; } // 속성

    public FrmRepeater()

    {

        SITE_NAME = "닷넷코리아";

    }

    protected void Page_Load(object sender, EventArgs e)

    {

 

    }

}

 



-------------------------------------------------------------------------------------




[실행결과]








Posted by holland14
:


* DataList 컨트롤은 간단한 테이블의 형태로 출력할 수 있다.








'도구상자'의 "DataList"컨트롤 FrmDataList.aspx의 <div>태그안에 마우스로 "드래그&드롭" --> "DataList 컨트롤"의 '스마트버튼' 마우스로 클릭 -> "데이터 소스 구성" 마우스로 클릭하여 '마법사' 창을 통해 (SqlDataSource컨트롤에서와 같은 과정으로, 단 "ORDER BY"에서 "Num"의 Desc(내림차순)로) 데이터베이스에 연결한다.





[FrmDataList.aspx] 소스코드



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

 

<!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>

   

        DataList.aspx로 출력<br />

        <br />

        <asp:DataList ID="DataList1" runat="server" DataKeyField="Num"

            DataSourceID="SqlDataSource1">

            <ItemTemplate>

                이름 : <%# Eval("Name") %>,

                이메일 : <%# DataBinder.Eval(Container.DataItem, "Email") %>,

                IP주소 : <%# Eval("PostIP") %>

            </ItemTemplate>

            <SeparatorTemplate>

                <hr />

            </SeparatorTemplate>

            <HeaderTemplate>

                제목

            </HeaderTemplate>

            <FooterTemplate>

                푸터(Footer, 꼬릿말)

            </FooterTemplate>

            <AlternatingItemStyle BackColor="Yellow" />

        </asp:DataList>

       

        <asp:SqlDataSource ID="SqlDataSource1" runat="server"

            ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

            SelectCommand="SELECT * FROM [Memos] ORDER BY [Num] DESC">

        </asp:SqlDataSource>

   

    </div>

    </form>

</body>

</html>

 




-------------------------------------------------------------------------------------



[실행결과]










Posted by holland14
:







'도구상자'의 "ListView"컨트롤을 FrmListView.aspx의 <div>태그안에 마우스로 "드래그&드롭" --> "ListView 컨트롤"의 '스마트버튼' 마우스로 클릭 -> "데이터 소스 구성" 마우스로 클릭하여 '마법사' 창을 통해 (SqlDataSource컨트롤에서와 같은 과정으로 하되, 단 아래그림과 같이 "Num", "Name", "Email"체크박스에만 체크하고, "ORDER BY"에서 "Num"의 DESC(내림차순)로) 데이터베이스에 연결한다.







아래그림과 같이 "ListView 컨트롤"의 '스마트버튼' 마우스로 클릭 --> "ListView 구성 ..."을 마우스로 클릭하여, '레이아웃 선택' 및 '스타일 선택'을 하고 "페이징 사용"체크박스에 체크하여 페이징 기능을 넣는다.







[FrmListView.aspx] 소스코드 및 디자인



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

 

<!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>

   

        리스트뷰 컨트롤을 사용해서 데이터 출력<br />

        <br />

       

        <asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1"

            DataKeyNames="Num">

            <LayoutTemplate>

                <table border="1">

                    <tr><td>번호</td><td>이름</td></tr>

                    <tr id="itemPlaceholder" runat="server"></tr>

                </table>

                <asp:DataPager ID="DataPager1" runat="server" PageSize="1">

                    <Fields>

                        <asp:NumericPagerField

                            ButtonCount="2"

                            PreviousPageText="이전"

                            NextPageText="다음" />                        

                    </Fields>

                </asp:DataPager>

            </LayoutTemplate>       

            <ItemTemplate>

                <tr>

                    <td><%# Eval("Num") %></td><td><%# Eval("Name") %></td>

                </tr>

            </ItemTemplate>

        </asp:ListView>

       

        <asp:SqlDataSource ID="SqlDataSource1" runat="server"

            ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

            SelectCommand="SELECT [Num], [Name], [Email] FROM [Memos] ORDER BY [Num] DESC">

        </asp:SqlDataSource>

   

    </div>

    </form>

</body>

</html>

 



아래그림의 [FrmListView.apsx] 디자인에서 "ListView 컨트롤"에 페이징 기능이 적용된 것을 볼 수 있다.






-------------------------------------------------------------------------------------




[실행결과]





Posted by holland14
:






'도구상자'의 "GridView"컨트롤을 FrmGridView.aspx의 <div>태그안에 마우스로 "드래그&드롭" --> "GridView 컨트롤"의 '스마트버튼' 마우스로 클릭 -> "데이터 소스 구성" 마우스로 클릭하여 '마법사' 창을 통해 (SqlDataSource컨트롤에서와 같은 과정으로 하되, 단 "ORDER BY"에서 "Num"의 DESC(내림차순)로) 데이터베이스에 연결한다.









"GridView"의 이벤트속성 중 아래그림과 같이 "RowDataBound"속성을 더블클릭하여 [FrmGridView.aspx]의 "코드비하인드페이지"인 [FrmGridView.aspx.cs]에서 이벤트핸들러를 추가하고 코드를 작성한다.








[FrmGridView.aspx] 소스코드 및 디자인



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

 

<!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>

   

        <br />

        GridView Memos 테이블의 데이터 출력<br />

        <br />

        <asp:GridView ID="GridView1" runat="server"

            AutoGenerateColumns="False"

            DataKeyNames="Num" ShowFooter="true"

            DataSourceID="SqlDataSource1" onrowdatabound="GridView1_RowDataBound">

            <Columns>

                <asp:BoundField DataField="Num" HeaderText="번호" ItemStyle-Width="100px"

                    ItemStyle-HorizontalAlign="Center"                   

                    HeaderStyle-BackColor="Blue"

                    HeaderStyle-ForeColor="White"

                    FooterStyle-BackColor="Aqua"

                    />

                <asp:TemplateField HeaderText="이름">

                    <ItemTemplate>

                        <a href='mailto:<%# Eval("Email") %>'>

                            <%# Eval("Name") %>

                        </a>

                    </ItemTemplate>

                </asp:TemplateField>

                <asp:HyperLinkField HeaderText="이름"

                    DataTextField="Name"

                    DataNavigateUrlFormatString="View.aspx?Num={0}"

                    DataNavigateUrlFields="Num" />

            </Columns>

            <RowStyle BackColor="Yellow" />

            <AlternatingRowStyle BackColor="Gray" />

        </asp:GridView>

        <asp:SqlDataSource ID="SqlDataSource1" runat="server"

            ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

            SelectCommand="SELECT * FROM [Memos] ORDER BY [Num] DESC">

        </asp:SqlDataSource>

   

    </div>

    </form>

</body>

</html>

 










-------------------------------------------------------------------------------------




[FrmGridView.aspx.cs] 소스코드




using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

 

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

{

    protected void Page_Load(object sender, EventArgs e)

    {

 

    }

 

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

    {

        // 푸터일 때만 "현재시간" 텍스트입력

        if (e.Row.RowType == DataControlRowType.Footer)

        {

            e.Row.Cells[0].Text = "현재시간 : ";

 

            e.Row.Cells[2].Text = DateTime.Now.ToShortTimeString();

        }

    }

}

 




-------------------------------------------------------------------------------------




[실행결과]

--> 첫 실행화면(처음 웹 페이지 로드시). 푸터(Footer)부분에 현재시간이 출력되었다. ([FrmGridView.aspx.cs] 소스코드에서 분홍색 형광펜 칠한 부분의 코드와 비교할 것!)





--> 아래그림에서 첫 번째 열의 이름("Name")을 마우스로 클릭하면 "Outlook Express("Email")"로 이동한다.([FrmGridView.aspx] 소스코드에서 회색형광펜 칠한 부분의 코드와 비교할 것!)





--> 아래그림에서 두 번째 열의 하이퍼링크가 걸린 이름("Name")위에 마우스오버(MouseOver)하면  아래그림에서 빨간색 테두리로 표시한 것과 같이 웹 페이지의 하단부에 "View.aspx?Num=2"와 같이 표시되는 것을 볼 수 있다([FrmGridView.aspx] 소스코드에서 하늘색 형광펜으로 칠한 부분의 코드와 비교할 것!). 하지만, 여기서는 "View.aspx"를 생성하지 않아서 두 번째 열의 하이퍼링크가 걸려 있는 "이름(Name)"을 클릭하면 웹페이지에서 에러가 난다.







Posted by holland14
:





 "Database.mdf"데이터베이스의 "Memos"테이블에 "폼뷰(FormView) 컨트롤을 사용해서 데이터를 입력"하고 "Memos"테이블에서 입력된 결과를 확인해본다.

우선 "C:\...\WebDataControl\"폴더에 "새 항목 추가"로 "웹 폼(Web Form)"을 하나 생성한 후 이름은 "FrmFormView.aspx"라고 짓는다. 

"FrmFormView.aspx"에서 아래와같이 코드작성 및 디자인을 하는데,
'도구상자'의 "FormView"컨트롤을 FrmFormView.aspx의 <div>태그안에 마우스로 "드래그&드롭" --> "FormView 컨트롤"의 '스마트버튼' 마우스로 클릭 -> "데이터 소스 구성" 마우스로 클릭하여 '마법사' 창을 통해 (SqlDataSource컨트롤에서와 같은 과정으로 하되, "Name", "Email", "PostIP"체크박스에만 체크한다.) 데이터베이스에 연결한다.


"FrmFormView.aspx"에서  코드작성 및 아래와 같이 디자인을 하고 "브라우저에서 보기"로 실행하여 웹 페이지에서 데이터를 입력한다.





[FrmFormView.aspx] 소스코드 및 디자인



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

 

<!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>

   

        폼뷰 컨트롤을 사용해서 데이터 입력<br />

        <br />

        <asp:FormView ID="FormView1" runat="server" DataKeyNames="Num"

            DataSourceID="sdsMemoWrite" DefaultMode="Insert">

            <EditItemTemplate>

                Num:

                <asp:Label ID="NumLabel1" runat="server" Text='<%# Eval("Num") %>' />

                <br />

                Name:

                <asp:TextBox ID="NameTextBox" runat="server" Text='<%# Bind("Name") %>' />

                <br />

                Email:

                <asp:TextBox ID="EmailTextBox" runat="server" Text='<%# Bind("Email") %>' />

                <br />

                PostIP:

                <asp:TextBox ID="PostIPTextBox" runat="server" Text='<%# Bind("PostIP") %>' />

                <br />

                <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True"

                    CommandName="Update" Text="업데이트" />

                &nbsp;<asp:LinkButton ID="UpdateCancelButton" runat="server"

                    CausesValidation="False" CommandName="Cancel" Text="취소" />

            </EditItemTemplate>

            <InsertItemTemplate>

                Name:

                <asp:TextBox ID="NameTextBox" runat="server" Text='<%# Bind("Name") %>' />

                <br />

                Email:

                <asp:TextBox ID="EmailTextBox" runat="server" Text='<%# Bind("Email") %>' />

                <br />

                PostIP:

                <asp:TextBox ID="PostIPTextBox" runat="server" Text='<%# Bind("PostIP") %>' />

                <br />

                <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True"

                    CommandName="Insert" Text="삽입" />

                &nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server"

                    CausesValidation="False" CommandName="Cancel" Text="취소" />

            </InsertItemTemplate>

            <ItemTemplate>

                Num:

                <asp:Label ID="NumLabel" runat="server" Text='<%# Eval("Num") %>' />

                <br />

                Name:

                <asp:Label ID="NameLabel" runat="server" Text='<%# Bind("Name") %>' />

                <br />

                Email:

                <asp:Label ID="EmailLabel" runat="server" Text='<%# Bind("Email") %>' />

                <br />

                PostIP:

                <asp:Label ID="PostIPLabel" runat="server" Text='<%# Bind("PostIP") %>' />

                <br />

                <asp:LinkButton ID="EditButton" runat="server" CausesValidation="False"

                    CommandName="Edit" Text="편집" />

                &nbsp;<asp:LinkButton ID="DeleteButton" runat="server" CausesValidation="False"

                    CommandName="Delete" Text="삭제" />

                &nbsp;<asp:LinkButton ID="NewButton" runat="server" CausesValidation="False"

                    CommandName="New" Text="새로 만들기" />

            </ItemTemplate>

        </asp:FormView>

        <asp:SqlDataSource ID="sdsMemoWrite" runat="server"

            ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

            DeleteCommand="DELETE FROM [Memos] WHERE [Num] = @Num"

            InsertCommand="INSERT INTO [Memos] ([Name], [Email], [PostIP]) VALUES (@Name, @Email, @PostIP)"

            SelectCommand="SELECT * FROM [Memos]"

            UpdateCommand="UPDATE [Memos] SET [Name] = @Name, [Email] = @Email, [PostIP] = @PostIP WHERE [Num] = @Num">

            <DeleteParameters>

                <asp:Parameter Name="Num" Type="Int32" />

            </DeleteParameters>

            <UpdateParameters>

                <asp:Parameter Name="Name" Type="String" />

                <asp:Parameter Name="Email" Type="String" />

                <asp:Parameter Name="PostIP" Type="String" />

                <asp:Parameter Name="Num" Type="Int32" />

            </UpdateParameters>

            <InsertParameters>

                <asp:Parameter Name="Name" Type="String" />

                <asp:Parameter Name="Email" Type="String" />

                <asp:Parameter Name="PostIP" Type="String" />

            </InsertParameters>

        </asp:SqlDataSource>

        <br />

        <br />

        아무리 많은 필드를 가진 테이블에 대해서도<br />

        입출력 기능을 1~2분내로 만들 수 있다...<br />

        하지만, 현업에서는 안쓴다...<br />

        고로, 테스트 용도로만 쓰자...<br />

   

    </div>

    </form>

</body>

</html>

 








-------------------------------------------------------------------------------------




[실행결과]

--> 처음 실행할 때 웹 페이지의 화면




--> 아래그림과 같이 각각의 텍스트박스에 테이터를 입력하고 "삽입"링크버튼(LinkButton)을 마우스로 클릭한 후... 




--> 아래그림과 같이 '서버 탐색기'의 "Memos"테이블에서 "테이블 데이터 표시"를 마우스로 클릭하여 "Memos"테이블에 입력되어 있는 데이터를 확인해본다.

 


--> "Database.mdf"데이터베이스의 "Memos"테이블에 저장(Insert)된 데이터 화면.(FormView컨트롤을 사용해서 데이터를 입력(Insert)한 결과이다.)






Posted by holland14
:






아래 그림과 같이 Visual Studio의 솔루션 탐색기에서 "App_Data"폴더에서 새 항목 추가를 선택한 다음





"SQL Server 데이터베이스"형식으로 데이터베이스 생성




솔루션 탐색기의 App_Data폴더에 생성된 데이터베이스인 "Database.mdf"




그러면  아래와 같이  web.config파일에 App_Data 폴더의 DB에 접근하는 데이터베이스 연결문자열이 생성된다.



[web.config]



<appSettings/>

 

 

    <!-- App_Data 폴더의 DB에 접근하는 데이터베이스 연결문자열 -->

    <connectionStrings>

        <add name="ConnectionString"

             connectionString="Data Source=.\SQLEXPRESS;

                AttachDbFilename=|DataDirectory|\Database.mdf;

                  Integrated Security=True;User Instance=True"

            providerName="System.Data.SqlClient" />

    </connectionStrings>

 

 

 

    <system.web>





서버탐색기의 [Database.mdf] - [테이블]에서 "새 테이블 추가"로 "Num" / "Name" / "Email" / "PostIP"항목의 필드가 들어가 있는 테이블을 아래그림과 같이 하나 만들고 테이블 이름은 "Memos"라고 짓는다.









"SqlDataSource"컨트롤에서 "Database.mdf"데이터베이스에 접근하는 데이터베이스 연결문자열을 얻어와서 "Database.mdf"데이터베이스에 연결하기 위해 아래그림과 같은 과정을 한다.



"Default.aspx" 디자인 모드에서 <div>태그안에 "SqlDataSource"컨트롤 "드래그&드롭"




"SqlDataSource"컨트롤의 "스마트버튼"에서 "데이터 소스 구성" 클릭.




"데이터 소스 구성"마법사 창에서 "ConnectionString"으로 연결 문자열 설정.




아래 그림의 마법사 창에서 (*)에 체크박스 표시하면 아래 SELECT문(SELECT * FROM [Memos])이 나온다. '다음'버튼 클릭.



아래그림의 마법사 창에서 '마침'버튼 클릭.






[Default.aspx] 소스코드 및 디자인



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

 

<!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:SqlDataSource ID="SqlDataSource1" runat="server"

            ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

            SelectCommand="SELECT * FROM [Memos]"></asp:SqlDataSource>

   

    </div>

    </form>

</body>

</html>

 









위의 과정을 통해 "SqlDataSource"컨트롤에 "Database.mdf"데이터베이스의 "Memos"테이블을 연결하였다.
이제 "Database.mdf"데이터베이스의 "Memos"테이블에 "ADO.NET을 사용해서 데이터를 입력(Insert)"하는 방법을 사용하여 데이터를 입력후, "Database.mdf"데이터베이스의 "Memos"테이블에 입력된 데이터를 확인한.
우선 "ADO.NET을 사용해서 데이터를 입력(Insert)"하기 위해, "C:\...\WebDataControl\"폴더에 "새 항목 추가"로 "웹 폼(Web Form)"을 하나 생성한 후 이름은 "FrmAdoInsert.aspx"라고 짓는다. 
"FrmAdoInsert.aspx" 및 "FrmAdoInsert.aspx.cs"에 코드작성 및 디자인을 하고 "브라우저에서 보기"를 통해 데이터를 입력한다.




[FrmAdoInsert.aspx] 소스코드 및 디자인



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

 

<!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>

   

        <br />

        ADO.NET을 사용해서 입력<br />

        <br />

        이름 :

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

        <br />

        이메일 :

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

        <br />

        IP주소 :

        <br />

        <br />

        <asp:Button ID="btnAdd" runat="server" Text="입력" onclick="btnAdd_Click" />

        <br />

        <br />

   

    </div>

    </form>

</body>

</html>

 










-------------------------------------------------------------------------------------



[FrmAdoInsert.aspx.cs] 소스코드



using System;

using System.Data.SqlClient;

using System.Configuration;

using System.Data;

 

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

{

    protected void Page_Load(object sender, EventArgs e)

    {

 

    }

 

    protected void btnAdd_Click(object sender, EventArgs e)

    {

        SqlConnection con = new SqlConnection(

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

        con.Open();

 

        SqlCommand cmd = new SqlCommand();

        cmd.Connection = con;

        cmd.CommandText = "Insert Into Memos Values(@Name, @Email, @PostIP)";

        cmd.CommandType = CommandType.Text;

 

        cmd.Parameters.AddWithValue("@Name", txtName.Text);

        cmd.Parameters.AddWithValue("@Email", txtEmail.Text);

        cmd.Parameters.AddWithValue("@PostIP", Request.UserHostAddress);

 

        cmd.ExecuteNonQuery(); // 저장

 

        // 나 자신으로 다시 이동 : 새로고침과 동일하겠죠???

        Response.Redirect(Request.ServerVariables["SCRIPT_NAME"]);

 

        con.Close();

    }

}

 

 



-------------------------------------------------------------------------------------



[실행결과]

--> 첫 실행화면. 아래그림의 웹 페이지에서 "이름", "이메일"텍스트박스에 데이터를 입력(Insert)하고 '입력' 버튼을 누른다.





아래그림과 같이 '서버 탐색기'의 "Memos"테이블에서 "테이블 데이터 표시"를 마우스로 클릭하여 "Memos"테이블에 입력되어 있는 데이터를 확인해본다.




--> "Database.mdf"데이터베이스의 "Memos"테이블에 저장(Insert)된 데이터 화면.











Posted by holland14
:

WebReply (답변형 게시판)

2009. 10. 16. 15:59

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.