블로그 이미지
Magic_kit
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

Category

Recent Post

Recent Comment

Archive

'.Net Project/ASP.NET 3.5 Sp1'에 해당되는 글 117

  1. 2009.10.27 42장 데이터 컨트롤(ADO.NET)
  2. 2009.10.27 41-10장 답변형 게시판(Common)
  3. 2009.10.27 41-9장 답변형 게시판(Delete)
  4. 2009.10.27 41-8장 답변형 게시판(View)
2009. 10. 27. 02:33 .Net Project/ASP.NET 3.5 Sp1
반응형

ADO.NET 공통적인 작업들..
- 데이터를 읽고, 삽입하고, 갱신하고, 삭제 기능 
- 데이터 읽기 DataReader 클래스 사용
   1. SqlConnection 클래스와 SqlCommand 클래스 인스턴스 생성

   2. 데이터 베이스 연결하기전에 "ConnectionString" 연결문자열 데이터 베이스로부터 특정 
       데이터를 읽어오기 위해서 SqlCommand개체에 SQL 질의 명령을 대입 

   3. Con.Open() 데이터 베이스가 열리면, DataReader 개체를 생성한다 
  
   4. 데이터를 읽으면  MyReader.Read 메서드에 루프를 들면서 DataReader 개체에 있는 
       데이터 가져온다.
  
   5. List<string> 개체를 생성한 다음 데이터 베이스가 닫히면 con.Close() 이면, 
       이 개체를 GetCompanyNameData 메서드에서 반환 완료 한다. 

ADO.NET 공통적인 작업들..
- 데이터 삽입
   1. 데이터는 XML 웹 서비스로 전달되거나 특정 클래스의 로직에 따라 생성 
  
   2. 데이터 삽입 동작은 cmd.ExcuteNonQuery 메서드 초기화 된다
       이 메서드는 어떤 사항도 반환하지 않을 대 데이터에 특정 질의 명령어 실행 완료한다.

-  데이터 갱신 
    데이터 베이스에 레코드 하나를 새로 삽입할 수 있을 뿐만 아니라 기존 테이블에 있는 데이터
    의 행들은 빈번하게 갱신 하도록 한다

- 데이터 삭제 
   Int 변수인 RecordsAffected에 ExecuteNonQuery 메서드 대입하면
   삭제된 레코드 수를 반환하게 된다.

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>ADO.NET</title>

</head>

<body>

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

    <div>

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

        <br />

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

        <br />

        이메일 :

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

        <br />

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

    </div>

    </form>

</body>

</html> 


FrmADOInsert.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)

    {

       //Empty 

    }

    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();

    }

} 







반응형
posted by Magic_kit
2009. 10. 27. 02:32 .Net Project/ASP.NET 3.5 Sp1
반응형

Common 프로젝트 안에 Reply.Common 클래스 라이브러리 안에 Border.CS 클래스 파일 생성

GetNewImg(), ConvertContentByEncoding()
메서드 정의

GetNewImg() : 24 시간 내의 글이면 New 이미지 붙이기

ConvertContentByEncoding() : 인코딩 방식에 따른 Content 문자열 변환

 Border.Cs

using System;


//
한번 이상 사용되는 코드는 메서드

// Common 구현

namespace Reply.Common

{

    public class Board

    {

        /// <summary>

        /// 날짜값 받아서 24시간내의 글이면 New 이미지 붙이기

        /// </summary>

        /// Reply.Common.Board.GetNewImg 써서 사용

        public static string GetNewImg(object postDate)

        {

            TimeSpan ts = DateTime.Now - Convert.ToDateTime(postDate);

            string result = "";

            if (ts.TotalHours < 24) // 24시간 내의 글이면...

            {

                result = "<img src='images/new.gif'/>";

            }

            return result;

        }

 

        /// <summary>

        /// 인코딩 방식에 따른 Content 문자열 반환 : Text/Mixed/HTML

        /// </summary>

        /// <param name="content"></param>

        /// <param name="encoding"></param>

        /// <returns></returns>

        public static string ConvertContentByEncoding
                                    (
string content, string encoding)

        {

            string result = String.Empty;

            encoding = encoding.ToLower(); // 소문자로 비교

            if (encoding == "Text") // 태그 실행 방지/소스 그대로

            {

                result = content

                            .Replace("&", "&amp;")

                            .Replace("<", "&lt;")

                            .Replace(">", "&gt;")

                            .Replace("\r\n", "<br />")

                            .Replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;");

            }

            else if (encoding == "Mixed") // 태그 실행

            {

                result = content.Replace("\r\n", "<br />");

            }

            else // HTML 표시

            {

                result = content;

            }

            return result;

        }

    }

}







반응형
posted by Magic_kit
2009. 10. 27. 02:32 .Net Project/ASP.NET 3.5 Sp1
반응형
ReplyDelete.aspx

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

 

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

        <h3> 삭제</h3>

        <div>

            <asp:Label ID="lblNum" runat="server"
                 ForeColor
="Red"></asp:Label>

             글을 삭제하시겠습니까?<br />

            암호 :

            <asp:TextBox ID="txtPassword" runat="server"
                 TextMode
="Password"></asp:TextBox>

            <asp:Button ID="btnDelete" runat="server" Text="삭제"

                onclick="btnDelete_Click1" />

            <br />

            <asp:Label ID="lblError" runat="server"
                 ForeColor
="Red"></asp:Label>

        </div>

    </div>

    </form>

</body>

</html>


ReplyDelete.Cs 
using System;

using Reply.Bsl;

using Reply.Entity;

 

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

{

    protected void Page_Load(object sender, EventArgs e)

    {

        // 넘겨져 번호 검사

        if (String.IsNullOrEmpty(Request["Num"]))

        {

 

            Response.Write("잘못된 요청입니다.");

            Response.End();

 

        }

        else

        {

            // 레이블에 넘겨져 번호 출력

            this.lblNum.Text = Request["Num"];

        }

    }

 

    protected void btnDelete_Click1(object sender, EventArgs e)

    {

        ReplyBiz rb = new ReplyBiz(); // 트랜잭션 처리 클래스에서 객체 생성

 

        ReplyEntity re = rb.SelectReplyByNum
                         (
Convert.ToInt32(Request["Num"]));

 

        int result = rb.DeleteReply
                     (
Convert.ToInt32(Request["Num"]), txtPassword.Text);

        if (result == -1)

        {

            lblError.Text = "암호가 틀립니다.";

        }

        else

        {

            Response.Redirect("List.aspx");

        }

    }

} 







반응형
posted by Magic_kit
2009. 10. 27. 02:31 .Net Project/ASP.NET 3.5 Sp1
반응형
ReplyView.aspx

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

 

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

    <script type="text/javascript">

        function GoModify() {

            location.href = 'Modify.aspx?Num=<%= Request["Num"] %>';

        }

    </script>

</head>

<body>

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

    <div>

        <h3>상세보기</h3>

        <div>

            번호 : <asp:Label ID="lblNum" runat="server" /><br />

            제목 : <asp:Label ID="lblTitle" runat="server" /><br />

            이름 : <asp:Label ID="lblName" runat="server" /><br />

            이메일 : <asp:Label ID="lblEmail" runat="server" /><br />

            홈페이지 : <asp:Label ID="lblHomepage" runat="server" /><br />

            작성일 : <asp:Label ID="lblPostDate" runat="server" /><br />

            수정일 : <asp:Label ID="lblModifyDate" runat="server" /><br />

            조회수 : <asp:Label ID="lblReadCount" runat="server" /><br />

            IP주소 : <asp:Label ID="lblPostIP" runat="server" /><br />

            <asp:Label ID="lblContent" runat="server" /><br />

            <br />

            <!-- 서버 컨트롤 사용 -->

            <asp:Button ID="btnReply" runat="server" Text="답변" 
                 onclick
="btnReply_Click" />

           

            <!-- OnClientScrip 사용 -->

            <asp:Button ID="btnModify" runat="server" Text="수정"
                 onclick
="btnModify_Click" />

           

            <!-- HTML 삭제 버튼 생성 -->

            <input type="button" value="삭제" onclick="location.href='<%
                        "Delete.aspx?Num=" + Request["Num"] %>
';" />

           

            <!-- HTML 리스트로 이동하는 버튼 생성-->

            <input type="button" value="리스트"
                        onclick
="location.href='List.aspx';" />

        </div>

    </div>

    </form>

</body>

</html> 


ReplyView.Cs
using System;

using Reply.Entity;

using Reply.Bsl;

 

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

{

    protected void Page_Load(object sender, EventArgs e)

    {

        if (String.IsNullOrEmpty(Request["Num"]))

        {

            Response.Write("잘못된 요청");

            Response.End();

        }

        else

        {

            if (!Page.IsPostBack)

            {

                DisplayData();

            }

        }

    }


   
private void DisplayData()

    {

        // 메서드 실행 결과값을 ReplyEntity 엔티티 개체에 담기

        ReplyEntity re =

            (new Reply.Bsl.ReplyBiz()).SelectReplyByNum
                                       (
Convert.ToInt32(Request["Num"]));

       

        // 각각의 컨트롤에 바인딩

        lblNum.Text = Request["Num"];

        lblTitle.Text = re.Title;

        lblName.Text = re.Name;

        lblEmail.Text = re.Email;

        lblHomepage.Text = re.Homepage;

        lblPostDate.Text = re.PostDate.ToString();

 

        // 수정 되었을 때에만, 해당 날짜 기록

        if (re.ModifyDate != DateTime.MinValue)

        {

            lblModifyDate.Text = re.ModifyDate.ToString();

        }

        

        lblReadCount.Text = re.ReadCount.ToString();

        lblPostIP.Text = re.PostIP;

 

        #region 인코딩 방식에 따른 컨텐츠 출력

 

        lblContent.Text = Reply.Common.Board.ConvertContentByEncoding
                          (re.Content, re.Encoding);

 

        // Common 폴더에 메서드화

        //if (re.Encoding == "Text") // 태그 실행 방지/소스 그대로

        //{

        //    lblContent.Text = re.Content.Replace("&", "&amp;").Replace("<", "&lt;").Replace(">", "&gt;").Replace("\r\n", "<br />").Replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;");

        //}

        //else if (re.Encoding == "Mixed") // 태그 실행

        //{

        //    lblContent.Text = re.Content.Replace("\r\n", "<br />");

        //}

        //else // HTML 표시

        //{

        //    lblContent.Text = re.Content;

        //}

        #endregion

    }

 

    protected void btnReply_Click(object sender, EventArgs e)

    {

        // Mode=Reply Write.aspx 페이지로 넘어가면, 답변 로직 처리

        Response.Redirect("Write.aspx?Mode=Reply&Num=" + Request["Num"]);

    }

    protected void btnModify_Click(object sender, EventArgs e)

    {

        Response.Redirect("Modify.aspx?Num=" + Request["Num"]);

    }

} 







반응형
posted by Magic_kit