==> [FrmSqlError.aspx] 소스 및 디자인


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

 

<!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:Button ID="btnConnect" runat="server" Text="연결"

            onclick="btnConnect_Click" />

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

    </div>

    </form>

</body>

</html>

 










=====================================================================================


 

==> [FrmSqlError.aspx.cs]


using System;

using System.Data;

using System.Data.SqlClient; //

 

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

{

    protected void Page_Load(object sender, EventArgs e)

    {

 

    }

    protected void btnConnect_Click(object sender, EventArgs e)

    {

        // 커넥션

        SqlConnection con = new SqlConnection();

        con.ConnectionString = "server=.;database=Market;uid=Market;pwd=670440;";

       

 

        // 커맨드

        SqlCommand cmd = new SqlCommand("Select * From Categories", con); // 생성자 사용

        cmd.CommandType = CommandType.Text;

 

        // 데이터 리더

        try

        {

            con.Open(); // DB오픈과 동시에

            SqlDataReader dr = cmd.ExecuteReader(); // 명령어 실행과 동시에

            con.Close(); // 닫기

        }

        catch (SqlException se) //[1] 에러 정보 담는 그릇 : SqlException

        {

            SqlErrorCollection sec = se.Errors; //[2] 에러 담는 컬렉션(에러들을 묶어서 관리한다.)

            // 에러를 묶어서 출력

            string msg = "";

            foreach (SqlError item in sec) //[3] 에러 하나를 담는 클래스

            {

                msg += item.Message + "<br />"; // .Message : 에러 메시지

            }

            this.lblError.Text = msg;

        }

    }

}

 

 

// SqlException 클래스 - SQL Server 가 경고나 오류를 반환하면 throw되는 예외입니다. 이 클래스는 상속될 수 없습니다.

 

// SqlErrorCollection 클래스 - .NET Framework Data Provider for SQL Server에서 생성된 오류를 모두 수집합니다. 이 클래스는 상속될 수 없습니다.

 

// SqlError 클래스 - SQL Server가 반환한 경고나 오류와 관련된 정보를 수집합니다.

 

 

 


=====================================================================================


 

[실행결과]


--> 위의 [FrmSqlError.aspx.cs]코드 내의 "커넥션"부분에서 "연결문자열"중 "Password"부분에 잘못된 값을 넣은 후, 웹페이지에서 '연결'버튼을 누르면 아래그림에서처럼 레이블에 "사용자 'Market'이(가) 로그인하지 못했습니다."라고 텍스트가 출력되며 '에러처리'된다.










Posted by holland14
:


==> [FrmSqlDataReaderRead.aspx] 소스 및 디자인

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

 

<!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="txtCategoryID" runat="server"></asp:TextBox>

        번 카테고리 출력

        <asp:Button ID="btnSelect" runat="server" Text="가져오기"

            onclick="btnSelect_Click" />

        <br />

        카테고리명 :

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

        (문자열)<br />

        부모카테고리 :

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

        (널가능 또는 정수형)<br />

        정렬순서 :&nbsp;

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

        (정수형)

    </div>

    </form>

</body>

</html>

 










=====================================================================================


 

==> [FrmSqlDataReaderRead.aspx.cs]


using System;

using System.Data;

using System.Data.SqlClient; //

 

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

{

    protected void Page_Load(object sender, EventArgs e)

    {

 

    }

 

    // Select : Connection->Command->DataReader

    protected void btnSelect_Click(object sender, EventArgs e)

    {

        // 커넥션

        SqlConnection con =

            new SqlConnection("server=.;database=Market;uid=Market;pwd=6750440;");

        con.Open();

 

        // 커맨드

        SqlCommand cmd = new SqlCommand();

        cmd.Connection = con;

        cmd.CommandText = // 넘겨온 값으로 쿼리문 작성

            "Select * From Categories Where CategoryID = " + txtCategoryID.Text;

        cmd.CommandType = CommandType.Text;

       

        // 데이터리더

        SqlDataReader dr = cmd.ExecuteReader();

 

        //[!] 읽어온 데이터를 Grid와 같은 컨트롤이 아닌 일반 컨트롤에 바인딩

        if (dr.Read()) // 데이터가 읽혀진다면???

        {           

            //txtCategoryName.Text = dr["CategoryName"].ToString(); // 문자열 인덱서를 사용함.           

            string CategoryName = dr.GetString(1); txtCategoryName.Text = CategoryName; // 바로 윗줄 주석처리된 코드와 동일한 코드이다.(정수(서수)를 사용함.)

 

            if (dr["SuperCategory"] != null) // 널값 처리...

            {

                txtSuperCategory.Text = dr["SuperCategory"].ToString();

            }

 

 

            //txtAlign.Text = dr["Align"].ToString(); // 문자열 인덱서를 사용함.

            int align = dr.GetInt16(3); txtAlign.Text = align.ToString(); // 바로 윗줄 주석처리된 코드와 동일한 코드이다.(정수(서수)를 사용함.)

        }

 

        // 마무리

        dr.Close();

 

        con.Close();

    }

}

 

 

 

 

// SqlDataReader.Read 메서드 - SqlDataReader를 다음 레코드로 이동합니다.

 

 

 


=====================================================================================




[실행결과]

--> 아래그림에서 맨위에 있는 '텍스트 박스'에 값(카테고리 범위 내의 정수값을 입력해야 함)을 입력하고 "가져오기"버튼을 클릭하면 아래 '카테고리명/부모카테고리/정렬순서'에 해당하는 각각의 '텍스트박스'에 데이터가 출력된다.









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

ADO.NET복습  (0) 2009.09.25
8. SqlError 클래스  (0) 2009.09.24
6. SqlDataReader 클래스  (0) 2009.09.24
5. SqlCommand 클래스  (0) 2009.09.24
4. SqlException 클래스  (0) 2009.09.24
Posted by holland14
:

==> [FrmSqlDataReader.aspx] 소스 및 디자인




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

 

<!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:GridView ID="ctlCategoryList" runat="server">

        </asp:GridView>

   

    </div>

    </form>

</body>

</html>

 




--> 여기서는 GridView에서 '스마트버튼'을 이용하지 않는다.





=====================================================================================




==> [FrmSqlDataReader.aspx.cs]




using System;

using System.Data;

using System.Data.SqlClient;

 

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

{

    protected void Page_Load(object sender, EventArgs e)

    {

        // 폼이 처음로드할 때에만 Select하자...

        if (!Page.IsPostBack)

        {

            DisplayDate();

        }

    }

 

    private void DisplayDate()

    {

        SqlConnection con =

            new SqlConnection("server=.;database=Market;uid=Market;pwd=6750440;");

        con.Open();

        SqlCommand cmd = new SqlCommand();

        cmd.Connection = con;

        cmd.CommandText = "Select * From Categories";

        cmd.CommandType = CommandType.Text;

 

        //[1] 데이터 조회 : Select문은 레코드를 받아와야하기때문에...

        SqlDataReader dr = cmd.ExecuteReader(); // Reader() 메서드 실행 후 결과값담기

 

        //[2] Gridview와 같은 데이터 컨트롤에 바인딩

        this.ctlCategoryList.DataSource = dr; // List<T>, DataReader, DataSet, ...이 담긴다.

        this.ctlCategoryList.DataBind(); // 실행(바인딩)

 

        //[3] DataReader는 반드시 Close() 해주어야 한다....

        dr.Close();

 

        con.Close();

    }

}

 

 

 

// SqlDataReader 클래스 - SQL Server 데이터베이스에서 행의 앞으로만 이동 가능한 스트림을 읽을 수 있게 합니다. 이 클래스는 상속될 수 없습니다.

 

// SqlCommand.ExecuteReader 메서드 () - CommandText Connection에 보내고, SqlDataReader를 빌드합니다.

 

 

 


=====================================================================================




[실행결과]

--> [SQL Server]내의 [Market]데이터베이스 - [dbo.Categories]테이블의 정보를 가져와서,
웹페이지에서 [dbo.Categories]테이블의 데이터를 "GridView"로 출력한다.




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

8. SqlError 클래스  (0) 2009.09.24
7. SqlDataReader.Read 메서드  (0) 2009.09.24
5. SqlCommand 클래스  (0) 2009.09.24
4. SqlException 클래스  (0) 2009.09.24
3. SqlConnectionStringBuilder 클래스  (0) 2009.09.24
Posted by holland14
:


==> [FrmSqlCommand.aspx] 소스 및 디자인

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

 

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

   

        <asp:Button ID="btnCommand" runat="server" Text="입력"

            onclick="btnCommand_Click" />

   

        <asp:Label ID="lblDisplay" runat="server" Text=""></asp:Label>

   

    </div>

    </form>

</body>

</html>

 









=====================================================================================




==> [FrmSqlCommand.aspx.cs]


using System;

using System.Data;

using System.Data.SqlClient;

 

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

{

    protected void Page_Load(object sender, EventArgs e)

    {

 

    }

    protected void btnCommand_Click(object sender, EventArgs e)

    {

        SqlConnection con = new SqlConnection();

        con.ConnectionString = "server=.;database=Market;uid=Market;pwd=6750440;";

        con.Open();

 

        //[!] CRUD를 하려면, DB가 오픈되어져 있어야 한다...

        //[1] Connection클래스의 인스턴스 생성 : 모든 명령어 실행

        SqlCommand cmd = new SqlCommand();

 

        //[2] Connection 속성으로 어떤 연결된 DB를 사용할건지 지정

        cmd.Connection = con; // 개체명

       

        //[3] CommandText 속성으로 명령어 지정 : SQL문 또는 저장프로시저명

        cmd.CommandText = "Insert Into Categories(CategoryName) Values('가전')";

 

        //[4] CommandType 속성으로 : SQL 또는 SP(Stored Procedure, 저장프로시저) 중 선택

        cmd.CommandType = CommandType.Text; // 인라인(InLine) SQL

 

        //[5] ExecuteNonQuery() 메서드로 모든 명령어 실행

        cmd.ExecuteNonQuery();

 

        //[6] 마무리

        this.lblDisplay.Text = "저장되었습니다.";

       

 

        con.Close();

    }

}

 

 

 

 

// SqlCommand 클래스 - SQL Server 데이터베이스에 대해 실행할 Transact-SQL 문이나 저장 프로시저를 나타냅니다. 이 클래스는 상속될 수 없습니다.

 

// SqlCommand.ExecuteNonQuery 메서드 - 연결에 대한 Transact-SQL 문을 실행하고 영향을 받는 행의 수를 반환합니다.

 




=====================================================================================




[실행결과]

--> 아래그림에서 "입력"버튼을 누르면 레이블에 "저장되었습니다."라는 출력문장이 나오며,
입력([FrmSqlCommand.aspx.cs]코드 내의 "Insert문"에 해당)한 데이터가 [SQL Server]내의 [Market]데이터베이스 - [dbo.Categories]테이블에 저장된다.




--> 위의그림의 과정에서 입력버튼을 4번 눌러서([FrmSqlCommand.aspx.cs]코드 내의
"Insert문"을 4번 실행한 것임.) 데이터를 입력(삽입)한 후 [SQL Server]내의 [Market]데이터베이스 - [dbo.Categories]테이블을 실행해서 열어보면  아래그림과 같이 'CategoryName'이 "가전"인 데이터가 4번 입력(삽입)된 것을 볼 수 있다.




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

7. SqlDataReader.Read 메서드  (0) 2009.09.24
6. SqlDataReader 클래스  (0) 2009.09.24
4. SqlException 클래스  (0) 2009.09.24
3. SqlConnectionStringBuilder 클래스  (0) 2009.09.24
2. SqlConnection 클래스  (0) 2009.09.24
Posted by holland14
:


==> [FrmSqlException.aspx] 소스 및 디자인


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

 

<!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:Button ID="btnConnect" runat="server" Text="연결"

            onclick="btnConnect_Click" />

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

   

    </div>

    </form>

</body>

</html>

 








=====================================================================================


 

==> [FrmSqlException.aspx.cs]


using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Data.SqlClient;

using System.Data; //[0]

 

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

{

    protected void Page_Load(object sender, EventArgs e)

    {

 

    }

    protected void btnConnect_Click(object sender, EventArgs e)

    {

        // 커넥션 스트링 자리를 SqlConnectionStringBuilder로 처리

        SqlConnection con = new SqlConnection(

            (new SqlConnectionStringBuilder("server=.;database=Market;uid=Market;pwd=675044;")).ConnectionString); // 잘못된 연결문자열 지정 후 에러 발생...

 

        try // try ~ catch절을 통해 Error발생시키면서 정상종료 시킴.

        {

            con.Open();

            lblError.Text = "연결완료";

        }

        catch (SqlException se) //[!] Sql관련 에러(메세지)를 담을 수 있는 그릇

        {

            lblError.Text = se.Message;

        }

        finally

        {

            if (con.State == ConnectionState.Open) // 연결이 되어있다면 연결종료    // ConnectionState -> "열거형"

            {

                con.Close(); // 에러가 나든 안나든 종료

            }

        }

    }

}

 

 

 

 

 

// SqlException 클래스 - SQL Server 가 경고나 오류를 반환하면 throw되는 예외입니다. 이 클래스는 상속될 수 없습니다.

 

// ConnectionState 열거형 - 데이터 소스에 대한 현재 연결 상태를 설명합니다. 이 열거형에는 멤버 값를 비트로 조합할 수 있는 FlagsAttribute 특성이 있습니다.

 



=====================================================================================




[실행결과]





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

6. SqlDataReader 클래스  (0) 2009.09.24
5. SqlCommand 클래스  (0) 2009.09.24
3. SqlConnectionStringBuilder 클래스  (0) 2009.09.24
2. SqlConnection 클래스  (0) 2009.09.24
1. ADO.NET시작  (0) 2009.09.24
Posted by holland14
:


==> [FrmSqlConnectionStringBuilder.aspx] 소스 및 디자인

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

 

<!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:Button ID="btnConnection" runat="server" Text="연결"

            onclick="btnConnection_Click" />

        <br />

   

    </div>

    <p>

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

   

    </p>

    </form>

</body>

</html>

 








=====================================================================================



==> [FrmSqlConnectionStringBuilder.aspx.cs]

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Data.SqlClient; //[0]

 

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

{

    protected void Page_Load(object sender, EventArgs e)

    {

 

    }

    protected void btnConnection_Click(object sender, EventArgs e)

    {

        //[1] 동적으로 데이터베이스 연결 문자열 생성

        SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder();

 

        //[2] 인덱서를 사용해서 값을 입력받음 : SQL 인젝션 해결

        sb["Data Source"] = "(local)";

        sb["Initial Catalog"] = "Market";

        sb["User ID"] = "Market";

        sb["Password"] = "6750440";

 

        SqlConnection objCon = new SqlConnection();

        objCon.ConnectionString = sb.ConnectionString; //[3] 위에서 지정한 값으로 설정

        objCon.Open();

        lblDisplay.Text = "연결완료";

        objCon.Close();

    }

}

 

 

 

 

// SqlConnectionStringBuilder 클래스 - SqlConnection 클래스에서 사용하는 연결 문자열의 내용을 손쉽게 만들고 관리할 수 있는 방법을 제공합니다.

 

 


=====================================================================================




[실행결과]


==> 바로 이전에 했던 SqlConnection과 똑같이 디자인했으므로, SqlConnectionStringBuilder도 실행결과는 동일하게 나온다.






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

6. SqlDataReader 클래스  (0) 2009.09.24
5. SqlCommand 클래스  (0) 2009.09.24
4. SqlException 클래스  (0) 2009.09.24
2. SqlConnection 클래스  (0) 2009.09.24
1. ADO.NET시작  (0) 2009.09.24
Posted by holland14
:


==> [FrmSqlConnection.aspx] 소스 및 디자인


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

 

<!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:Button ID="btnConnection" runat="server" Text="연결"

            onclick="btnConnection_Click" />

        <br />

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

   

    </div>

    </form>

</body>

</html>

 








=====================================================================================




==> [FrmSqlConnection.aspx.cs]



using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Data.SqlClient; //[0]

 

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

{

    protected void Page_Load(object sender, EventArgs e)

    {

 

    }

    protected void btnConnection_Click(object sender, EventArgs e)

    {

        ////[1] SqlConnection 클래스의 인스턴스 생성

        //SqlConnection con = new SqlConnection();

       

        ////[2] ConnectionString 속성 지정

        //con.ConnectionString = "server=.;database=Market;uid=Market;pwd=6750440;";

 

        ////[3] Open() 메서드로 DB 접속

        //con.Open();

 

        ////[!] 필요한 처리 : CRUD

        //this.lblDisplay.Text = "DB에 접속되었습니다.";

 

        ////[4] Close() 메서드로 DB 접속 해제

        //con.Close();

 

 

 

        // 위의 주석처리한 코드와 똑같은 코드(방법만 다르게 했음)

        SqlConnection con = new SqlConnection(

            "Data Source=(local);Initial Catalog=Market;" // 연결문자열을 잘못타이핑해서 나는 에러가 많으니 조심!

            + "User ID=Market;Password=6750440;"); // 생성자 사용

        con.Open();

        lblDisplay.Text = "연결 완료";

        con.Close();

    }

}

 

 

 

// SqlConnection 클래스 - SQL Server 데이터베이스에 대한 열린 연결을 나타냅니다. 이 클래스는 상속될 수 없습니다.

 

 


=====================================================================================




[실행결과]

--> 아래 그림의 웹페이지에서 "연결"버튼을 누르면, 레이블에 빨간글씨로 "연결 완료"라고 나온다.





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

6. SqlDataReader 클래스  (0) 2009.09.24
5. SqlCommand 클래스  (0) 2009.09.24
4. SqlException 클래스  (0) 2009.09.24
3. SqlConnectionStringBuilder 클래스  (0) 2009.09.24
1. ADO.NET시작  (0) 2009.09.24
Posted by holland14
:

** ADO.NET에 대하여... **

- ADO.NET 모든 데이터베이스 처리 명령어. C# 클래스들의 모음. 객체지향 기반 명령어 처리

- SQL Server, Oracle 등 모든 데이터베이스 접근 가능

- ASP.NET, Windows Forms, WPF(Silverlight)에서 모두 사용

- 프로바이드 제공

- SQL Server관련 DB 입출력

- OLE DB : SQL Server제외한 모든 데이터베이스. 모든 데이터 접속 가능하도록 함

- 명령어는 다 똑같음. 데이터베이스가 달라도 모든 명령어들이 똑같이 사용됨

- Connection, Command, DataReader, DataAdapter 명령어 사용

- DataSet을 사용

- ODBC 사용하지 않음

- ODBC기술은 OLE DB로 흡수 됨



** ADO.NET의 특징 **

- 프로그램 인터페이스 제공

- DB 입출력 관련 모든 인터페이스(API)제공

- 분산환경, 비연결된 데이터베이스 접속가능

- 연결지향

- LINQ 제공. 데이터베이스를 가져다가 LINQ로 연결

- SQL Server연결 할 때는 SqlClient

- 다른 모든 서버 연결 할 때는 Oledb

- System.Data.SqlClient

- 네임스페이스들의 집합

- Market 데이터베이스 연결하는 방법




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

6. SqlDataReader 클래스  (0) 2009.09.24
5. SqlCommand 클래스  (0) 2009.09.24
4. SqlException 클래스  (0) 2009.09.24
3. SqlConnectionStringBuilder 클래스  (0) 2009.09.24
2. SqlConnection 클래스  (0) 2009.09.24
Posted by holland14
:






Posted by holland14
:
 

방명록 애플리케이션 설계

 

목표 : http://www.guestbook.com/ -> 한줄짜리 홈페이지 출력되도록...

 

Windows Server 레벨( -> 실제 배포(서비스) 사용됨)

  • 이번에는 "Windows Server 2003"에서 10가지 실행

 

  1. 설치
    1. 서비스 가동
      1. hostname, ipconfig /all, ping
  1. 사용자
    1. net user GuestBook Pa$$w0rd /add
  1. NTFS
    1. 입주공간
      1. 보안
        1. Everyone, IUSR_인터넷게스트계정, Network Service, 해당사용자권한
      1. 암호화
      2. 압축
      3. 할당량
        1. 최대1GB
  1. 공유
    1. UNC
  1. IIS
    1. 홈디렉터리
    2. 가상 디렉터리(응용프로그램설정)
  1. FTP
  2. DNS
  3. 기타
    1. 메일 서비스
      1. SMTP(25)
      2. POP3(110)
        1. guestbook@guestbook.com
          1. 아웃룩 익스프레스에서 보내고, 받고 테스트, 외부로는 안나감…(방화벽때문에)
    1. 미디어 서비스
      1. Windows Server 2003 초기버전에는 포함. 2003 이후로는 빠짐…
        1. Windows 7 K, KN
  1. 백업
    1. 부분 백업 : 지정한 시간에 지정된 폴더만…
  1. 원격

 

 


SQL Server 레벨

  1. 설치 환경구성
    1. 인스턴스 : (local)
  1. 데이터베이스
    1. DB : GuestBook
  1. 로그인사용자
    1. UID : GuestBook
    2. PWD : Pa$$w0rd
  1. OLE DB 설정
    1. GuestBook.udl
  1. 테이블 설계
    1. GuestBooks
      1. 개념적 설계
        1. 노트


 
  1. 논리적 설계
    1. ER-WIN, VISIO

 
  1. 물리적 설계

 

 

16.  SQL

    1. 입력, 출력, 상세, 수정, 삭제, 검색

17.  T-SQL

    1. 예시 데이터 100 입력

18.  개체

    1. Stored Procedure
      1. AddGuestBook
      2. GetGuestBooks

19.  DTS

    1. Zip 테이블

20.  백업 복원

    1. 전체 백업

 

Visual Studio 레벨

21.  설치

    1. .NET 3.5

22.  새 사이트

    1. GuestBook

23.  Web.config

    1. <connectionStrings> 섹션에 4가지 기록
      1. Server, Data Source
      2. Database, Initial Catalog
      3. Uid, User ID
      4. Pwd, Password

24.  입력

    1. SqlDataSource 컨트롤 : Insert 쿼리

25.  출력

    1. SqlDataSource 컨트롤 : Select 쿼리

 




====================================================================================




GuestBook.sql



-- 방명록테이블설계

Create Table GuestBooks

(

       ItemID Int Identity(1, 1) Primary Key,

       Name VarChar(25) Not Null,

       Content VarChar(8000) Not Null,

       Password VarChar(20) Not Null,

       PostData SmallDateTime Default(GetDate()),

       PostIP VarChar(15) Null

)

Go

 

 

-- 예시문6개타이핑~~

 

-- 입력

-- 샘플데이터100개입력

Declare @i Int

Set @i = 1

While @i <= 100

Begin

      

       If @i % 2 = 0

       Begin

             Insert Into GuestBooks Values('홍길동', '안녕', '1234', GetDate(), '127.0.0.1')

       End

       Else

       Begin

             Insert Into GuestBooks Values('지리산', '방가', '1234', GetDate(), '127.0.0.1')

       End

      

       Set @i = @i + 1

      

End

Go

Select Count(*) From GuestBooks

Go

 

-- 출력

Select * From GuestBooks Order By ItemID Asc

Go

 

-- 상세

Select * From GuestBooks Where ItemID = 1

Go

 

-- 수정

Update GuestBooks Set Name = '제시카' Where Name = '홍길동'

Go

 

-- 삭제

Delete GuestBooks Where ItemID = 1 And (1 <> 1)

Go

 

-- 검색

Select * From GuestBooks Where Name Like '%'

Go

 

 

 

-- 6개저장프로시저생성하세요~~~

 

-- 입력저장프로시저

Create Proc AddGuestBook

       @Name VarChar(25),

       @Content VarChar(8000),

       @Password VarChar(20),

       @PostIP VarChar(15)

As

       Insert Into GuestBooks Values(@Name, @Content, @Password, GetDate(), @PostIP)

Go

 

-- 출력저장프로시저

Create Proc GetGuestBooks

As

       Select * From GuestBooks Order By ItemID Desc

Go

 

-- 상세저장프로시저

Create Proc GetGuestByItemID

       @ItemID Int

As

       Select * From GuestBooks Where ItemID = @ItemID

Go

 

-- 수정저장프로시저

Create Proc UpdateGuest

       @Name VarChar(25),

       @ItemID Int

As

       Update GuestBooks Set Name = @Name Where ItemID = @ItemID

Go

 

-- 삭제저장프로시저

Create Proc DeleteGuest

       @ItemID Int

As

       Delete GuestBooks Where ItemID = @ItemID

Go

 

-- 검색저장프로시저

Create Proc SearchGuest

       @SearchText VarChar(50)

As

       Declare @sql VarChar(100)

       Set @sql = '

       Select * From GuestBooks Where Name Like ''' + @SearchText + '%''

       '

       Exec(@sql)

Go

SearchGuest ''

 

 

 

 


====================================================================================


 

Visual Studio 레벨

  1. 설치 : .NET 3.5
  2. 사이트 : GuestBook으로 이름지정하여 생성
  3. Web.config : SQL Server 레벨의 데이터베이스 연결문자열 설정
        a. <connectionStrings> 섹션에 4가지 기록
              i. Server, Data Source
             ii. Database, Initial Catalog
            iii. Uid, User ID 
            iv. Pwd, Password       
  4. 생성
  5. 입력 페이지 작성
        a. SqlDataSource 컨트롤 : Insert 쿼리
  6. 출력(검색) 페이지 작성
        b. SqlDataSource 컨트롤 : Select 쿼리


Visual Studio를 열고 [파일] - [새로 만들기] - [웹사이트]클릭 -> [ASP.NET 웹 사이트]로 선택하고 "저장위치(저장폴더)"는 "C:\...\GuestBook폴더"로 지정한다.("GuestBook폴더가 없으면, [ASP.NET 웹 사이트]로 선택하여 만들 때 GuestBook폴더를 만든다.")


[Default.aspx 디자인]
아래그림과 같이 웹페이지를 디자인한다. 그림에서 [SqlDataSource - SqlDataSource2]는 위에 있는 "이름", "내용", "암호",  "IP주소" 각각의 4개 텍스트 박스의 값을 입력받아서(insert) 담는 그릇에 해당되며, [SqlDataSource - SqlDataSource2]의 "속성"중 "InsertQuery"속성을 클릭하면 속성을 바꾸는버튼(...)이 뜨는데 여기서 "InsertQuery "속성을 변경해줘야한다.





[web.config]
아래그림의 코드에서 "name", "connectionString에서 'server', 'database', 'uid', 'pwd'와", 그리고 "providerName"을 아래와 같이 입력하였다.






[Default.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 _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        // 처음 로드시에 IP주소 미리 세팅

        if (!Page.IsPostBack)

        {

            this.txtPostIP.Text = Request.UserHostAddress; // IP주소 받아서 초기화

        }

    }

    protected void btnSave_Click(object sender, EventArgs e)

    {

        // 저장

        this.SqlDataSource2.Insert();

        // 새로 요청

        this.GridView1.DataBind();

    }

}

 





<실행결과>
아래실행결과에서 '이름', '내용', '암호', 'IP주소' 각각의 4개 텍스트 박스에 "한라산"과 "백두산"의 각각의 정보("Name", "Content", "Password", "PostIP"에 해당하는 정보)를 입력하여 "글 남기기"버튼을 누르면 그림과 같이 "한라산"과 "백두산"의 입력(insert)한 정보가 (GridView에)출력된다.






Posted by holland14
: