블로그 이미지
내게 능력 주시는 자 안에서 내가 모든것을 할수 있느니라 - 빌립보서 4 : 13 - happydong

카테고리

Happydong (1363)
프로그래밍 (156)
MUSIC (16)
인물 (3)
Utility (10)
세미나 소식&내용 (22)
IT뉴스 (18)
운동 (830)
CAFE (10)
Life (282)
Total
Today
Yesterday



AJAX 방명록 만들기[7]

후~요즘 날씨가 너무 쌀쌀하네요!! AJAX 방명록 만들기 강좌를 빨리 끝내야하는데... 제가 좀 게을러서 늦어 지내요~^^캬캬~ 스파르타하게 빨리 빨리 올리도록 하겠습니다.^^
저번 내용은 데이터베이스는 만들어 보았습니다. 그럼 이제 작성한 글을 데이터베이스에 어떻게 연결해서 넘기게 되는지 확인해 보도록 하겠습니다. 일단 사용자가 글을 다쓰고 확인을 클릭하게 되면 비하인드코드에서 어떠한 일이 일어나는지 코드를 보시도록 하겠습니다!!

 Guest_Board.aspx.cs페이지

 protected boardClass bclass = new boardClass();


protected void WriteOK_Click(object sender, EventArgs e)

{

bclass.u_name = txtuserName.Text;

bclass.u_pass = txtpassword.Text;

bclass.u_content = txtContent.Text;

bclass.u_ip = Request.UserHostAddress;

bclass.icon = this.IMG_ICON.Value;

 

bclass.Procedure(1);

Text_Clear();

 

ListBind();

}


위 코드는 확인 버튼을 클릭하고 나서 대충유효성 검사까지 완료 되면 비하인드코드에서 일어나는 행위들입니다. 코드에서 bclassboardClass를 인스턴트로 생성한 것 입니다. 코드 위 부분에 인스턴트로 생성한 코드가 보이시지요. 그래서
boardClass에 접근이 가능하겠지요.
이제부터 설명하는 아래내용은 위 코드를 중심으로 하나하나의 코드와 구현내용을 보도록 하겠습니다.

ㅁ Property

 

bclass.u_name  : 작성자 닉네임을 boardClass의 변수값으로 넘김.

bclass.u_pass  : 작성자 비밀번호를 boardClass의 변수값으로 넘김

bclass.u_content : 작성내용을 boardClass의 변수값으로 넘김.

bclass.u_ip : 작성자의 ip 주소를 boardClass의 변수값으로 넘김.

bclass.icon : 작성자가 선택한 아이콘의 파일명이 boardClass의 변수값으로 넘김.

아래 코드는 boardClass의 변수선언 코드와 Property 부분입니다.

boardClass.cs페이지

private string U_Name;

private string U_Pass;

private string U_Content;

private string U_Ip;

private string ICon;

 

public string u_name

{

get { return U_Name; }

set { U_Name = value; }

}

public string u_pass

{

get { return U_Pass; }

set { U_Pass = value; }

}

public string u_content

{

get { return U_Content; }

set { U_Content = value; }

}

public string u_ip

{

get { return U_Ip; }

set { U_Ip = value; }

}

public string icon

{

set { ICon = value; }

}


저는 위와같이 코드를 짜보았습니다. 모 그냥 Property 만들지 않고 한페이지에서도 가능하지요!
^^;; 저는 초보라..ㅋ이렇게도 해보고 저렇게도 해보고 이렇고 있습니다.^^ㅋ 아무튼 이렇게 값들을 넘기고,그 다음에 코드를 보시면 bclass.Procedure(1); 코드가 있습니다. 이것은 어떻게 정의된 메소드인지 알아 보도록 하지요! 앞에 bclass. 이렇게 있는걸 보니..딱 boardClass에서 선언된 녀석이란걸 알수 있겠지요! 아래 코드로 확인해 보도록 하시지요!

boardClass.cs페이지

private dbClass dcon = new dbClass();


private string query;


public void Procedure(int num)

{

dcon.Open();

 

if (num == 1)

{

query = "gb_insert";

Db_Parameters(true);

dcon.ExecuteNon(query);

}

else if (num == 2)

{

query = "total_count";

total_Count = dcon.GetCheck(query);

}

else if (num == 3)

{

ds = dcon.GetDataSet(query);

}

else if (num == 4)

{

query = "gb_password";

Db_Parameters(false);

Count = dcon.GetCheck(query);

if (Count != 0)

{

dcon.Comm.Parameters.RemoveAt(0);

query = "gb_Delete";

dcon.ExecuteNon(query);

}

}

 

dcon.Close();

}


bclass.Procedure(1);
이 코드에서 보이듯 메스드에 int형식의 인자값을 받는
것을 알수 있습니다. 위 코드에서 보면 받은 인자값으로 query를 구분합니다.그럼 대충 제일 위에 코드부터 하나하나 살펴 보도록 하겠습니다. 코드 위 부분에 dbClass를 인스턴트로 생성하는 코드가 있습니다. dbClass에서는 데이터베이스 연결하고 실행하는 코드들을 정의한 Class입니다. 위 코드를 하나하나 보시면서 그때그때 dbClass 내용을 설명해 드리도록 하겠습니다. 먼저 dcon.Open();라는 코드가 선언 되어 있습니다. 그 코는 아래와 같습니다.

dbClass.cs

 private SqlConnection Conn;

public void Open()

{

Conn = new SqlConnection(ConfigurationSettings.AppSettings["constr"]);

Conn.Open();

}


전역변수로 SqlConnection을 선언하고 Open이라는 메소드에서 Connection 연결정보를 정의했
습니다. 사용자 정보는 Web.config 에 정의해 놓았습니다.(아래 코드 참고)

Web.config 페이지

 - Web.config 파일에 정의 -

<appSettings>

<add key="constr" value="server=(local);database=test;user id=kdw;password=kdw"/>

</appSettings>


그리고 SqlConnection의 Open메소드를 이용해서 데이터베이스와 연결을 했습니다.
자~그럼 아까 인자값을 1로 받았습니다. 그럼 1과 같은 조건에 걸리겠네요! 걸린 코드를 보니 일단 query라는 전역 변수에 "gb_insert"라는 저장프로시저명을 정의하고 있습니다. gb_insert의 내용은 아래코드와 같습니다.

 gb_insert Procedure

CREATE proc gb_insert

(

        @b_name varchar(20),

        @b_pass varchar(20),

        @b_content varchar(5000),

        @b_ip varchar(15),

        @b_icon varchar(20)

)

as

insert into guest_board (b_name,b_pass,b_content,b_ip,b_icon) values(@b_name,@b_pass,@b_content,@b_ip,@b_icon)

GO

 
그 다음는 Db_Parameters라는 메소드에 bool형식의 인자값을 넘기고 있습니다. Db_Parameters메소드의 코드를 보도록 하겠습니다.

 boardClass.cs페이지

 public void Db_Parameters(bool X)

{

dcon.Comm.Parameters.Add("@b_pass", SqlDbType.VarChar, 20);

dcon.Comm.Parameters["@b_pass"].Value = U_Pass;

 

if (X)

{

dcon.Comm.Parameters.Add("@b_name", SqlDbType.VarChar, 20);

dcon.Comm.Parameters.Add("@b_content", SqlDbType.VarChar, 5000);

dcon.Comm.Parameters.Add("@b_ip", SqlDbType.VarChar, 15);

dcon.Comm.Parameters.Add("@b_icon", SqlDbType.VarChar, 20);

 

dcon.Comm.Parameters["@b_name"].Value = U_Name;

dcon.Comm.Parameters["@b_content"].Value = U_Content;

dcon.Comm.Parameters["@b_ip"].Value = U_Ip;

dcon.Comm.Parameters["@b_icon"].Value = ICon;

}

else

{

dcon.Comm.Parameters.Add("@b_seq", SqlDbType.Int);

dcon.Comm.Parameters["@b_seq"].Value = seq;

}

}


받은 인자 값으로 조건을 확인하고 있습니다. 여기서 조건을 사용한 목적은 insert할 것인지비밀번호를 확인 후 삭제를 할 것인지를 확인해서 그에 맞는 Parameter를 만들기 위함 입니다. 아까 ture로 값이 넘어 왔었지요! 그럼 기본적으로 b_pass의 parameter를 만들고b_name,b_content,b_ip,b_icon 이렇게 추가로 더 만들어 습니다.(값도 다 넣어 주었지요)
그럼 이제 실행 시키면 데이터가 데이터베이스에 넘어 가겠지요. 그 다음 코드가 바로 값을 넘겨주는 코드라고 보시면 되겠습니다.^^ "dcon.ExecuteNon(query)" 이 코드 또한 dbClass에 정의된 내용 입니다. 아래 코드로 보시겠습니다.

dbClass.cs페이지

 public SqlCommand Comm = new SqlCommand();

 

public void ExecuteNon(string procedure)

{

Comm.Connection = Conn;

Comm.CommandText = procedure;

Comm.CommandType = CommandType.StoredProcedure;

Comm.ExecuteNonQuery();

}


SqlCommand
를 전역으로 선언해 두었습니다. 그리고 ExeuteNon은 인자 값으로 string형의 값을 받습니다. 그 값은 SQL Query일 것이다. 생성한 Command에 Connection 객체를 생성하고 CommanText에 해당 Query를 설정하고 그 Type를 설정한뒤에 ExecuteNonQuery를 실행하면 입력한 내용이 데이터 베이스에 기록이 되게 됩니다~!
그럼 이제 마지막 줄에 있는 코드를 보도록 하겠습니다.조건들 마지막부분에 dcon.Close() 가 있습니다. 딱 아시겠지요!! 데이터 베이스를 넘겼으니깐 더 이상 데이터베이스와 연결할 필요가 없겠지요!그래서 끊도록 합니다.  dcon.Close() 코드 또한 dbClass란걸 알수 있을 것입니다. 그럼 해당 코드에 코드내용을 보도록 하겠습니다. 모 보시지 않으셔도 대충 짐작하실것 같네요!^^;;; 

 dbClass.cs페이지

 public void Close()

{

        Comm.Parameters.Clear();

        Conn.Close();

}


자 위코드로 인해 데이터 베이스 연결이 끊겼습니다.
그럼 계속해서 이벤트 단에 있는 나머지 코드를 살펴 보도록 하겠습니다. Text_Clear() 메소드는 글을 입력 받는 TextBox에 남아있는 글을 지우는 메소드입니다. 코드는 아래와 같습니다.

Guest_Board.aspx.cs페이지

 protected void Text_Clear()

{

txtContent.Text = "";

txtuserName.Text = "";

IMG_ICON.Value = "";

}


딱 아실수 있으시겠지요!!그럼 이제 하나만은 코드를 보도록 하시지요!!
ListBind() 메소드는 리스트부분에 새로작성한 글이 업데이트 될 수 있도록 합니다.이번 내용은 여기까지 작성하도록 하겠습니다. ListBing() 메소드는 리스트부분을 다룰때 자세하게 다루겠습니다. 테스트 하실때는 ListBind()부분은 주석처리해서 데이터 베이스 연결해서 데이터가 입력 되었는지 확인해 보도록 하십시오~^^

Posted by happydong
, |