회원 관리

2011. 7. 10. 01:46
반응형

 


				

login.aspx.cs

 


public partial class login : System.Web.UI.Page
{
    SqlConnection conn; // SQL 
데이터베이스 연결용
    SqlCommand cmdSelect; // SQL 
서버에 대해 실행할 문장
    SqlDataAdapter adapter; //DataSet
 채우고 DB 업데이트  데이터 명령을 저장
    DataSet dataset; // 
메모리 내의 데이터 캐시

    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string strsql = "select * from tblmemo"// tblmemo 
테이블의 모든 정보 선택
        conn = new SqlConnection("server=localhost;database=message;uid=sa;pwd=romantic"); // DB
 message 데이터베이스 연결
        cmdSelect = new SqlCommand(strsql, conn); //message DB
 갖고 있는 테이블 중에서 tblmemo 선택한다.

        adapter = new SqlDataAdapter(); //  SQL DB
 업데이트하는  사용할 데이터 명령 집합과 DB 연결
        adapter.SelectCommand = cmdSelect; // 
위에 있는 cmdSelect 연결해 
        dataset = new DataSet(); // dataset
이라고 하는 DataSet(메모리 안의 DB 캐시생성
        adapter.Fill(dataset, "tblmemo"); // dataset
 tblmemo 채운다.(tblmemo 어떤 이름이어도 상관없음)

        DataTable table = dataset.Tables["tblmemo"]; 
        DataRow[] row = table.Select("user_id = '" + TextBox1.Text + "'"); //
아이디 체크: userid textbox1 내용을 비교한다.
        if (row.Length > 0) //row
 길이가 0보다 크면 아이디가 존재하는 .

            if (row[0]["pass"].ToString() == TextBox2.Text.ToString()) // TextBox2
 입력한 문자열과 실제 Password 비교길이가 0 보다 크면 로그인 OK.
            {
                Session["uid"] = row[0]["user_id"]; // user_id 
 Session ["uid"] 저장.
                Response.Redirect("user.aspx"); // 
로그인 되면 user.aspx 이동.(여기서 Session["id"] 활용)
            }
            else // TextBox2
 입력한 문자열과 실제 Password 비교길이가 0 이하면 로그인 실패
            {
                Response.Write("<script>alert('
비밀번호가 일치하지 않습니다');</script>");
                TextBox2.Focus(); // TextBox2
 캐럿 위치
            }

        else // row
 길이가 0이기 때문에 아이디가 존재하지 않음.
        {
            Response.Write("<script>alert('
존재하지 않는 아이디입니다');</script>");
            TextBox1.Text = ""// 
아이디 텍스트박스(TextBox1) 초기화
            TextBox1.Focus(); // TextBox1
 캐럿 위치
        }
    }
    protected void Button2_Click(object sender, EventArgs e) // 
입력 박스 초기화
    {
        TextBox1.Text = "";
        TextBox2.Text = "";
    }
}

 


				

user.aspx.cs

 

 

public partial class user : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["uid"].ToString() == ""// 
로그인 페이지를 거치지 않아 세션의 uid 정보에 아무 값이 없다.
            Response.Write("<script>alert('
로그인   페이지를   있습니다.');location.href='login.aspx';</script>"); // 로그인하지 않았기 때문에  진행하지 않고 경고창을 띄운  다시 login.aspx 페이지로 보낸다.
        else
        {
            string str = "select * from tblmemo"// tblmemo 
테이블의 모든 정보 선택
            SqlConnection conn = new SqlConnection("server=localhost;database=message;uid=sa;pwd=romantic"); //DB
 message 데이터베이스 연결
            SqlCommand comm = new SqlCommand(str, conn); // message DB
 갖고 있는 테이블 중에서 tblmemo 선택한다.

            SqlDataAdapter adapter = new SqlDataAdapter(); //  SQL DB
 업데이트하는  사용할 데이터 명령 집합과 DB 연결
            adapter.SelectCommand = comm; // 
위에 있는 comm 연결해 
            DataSet dataset = new DataSet(); // dataset
이라고 하는 DataSet(메모리 안의 DB 캐시생성
            adapter.Fill(dataset, "tblmemo"); // dataset
 tblmemo 채운다.(tblmemo 어떤 이름이어도 상관없음)

            DataTable table = dataset.Tables["tblmemo"];
            DataRow[] row = table.Select("user_id='" + Session["uid"] + "'"); //
아이디 체크: userid Session["uid"] 내용을 비교한다.

            Response.Write("<center><h1>
로그인 성공</h1><p>" + Session["uid"] + " 반갑습니다.</p><hr><p>"); //Session["uid"] 사용자 이름.
            if ((int)row[0]["msg_count"] > 0) // 
받은 메시지의 수에 따라 메시지를 다르게 표시.
            { // 
 메시지가 있을 
                Response.Write(row[0]["msg_count"] + "
개의 메세지가 도착하였습니다.</p><br /><br /><br />");
            }
            else // 
 메시지가 없을 
            {
                Response.Write("
받은 메모함에 <strong> 메시지가 없습니다</strong>. (_)</p><br /><br />");
            }
            Response.Write("<p>[<a href=mod.aspx>
회원 정보 수정</a>]</p>");
            Response.Write("<p>[<a href=del.aspx>
회원 탈퇴</a>]</p>");
            Response.Write("<p>[<a href=memo_write.aspx>
메모보내기</a>]</p>");

            if ((int)row[0]["msg_count"] > 0) // 
메시지가 있으면 메시지 세부 내용도 표시
            {
                Response.Write("<p>[<a href=memo_list.aspx>
리스트 보기</a>]</p>");
            }

            Response.Write("<p>[<a href=main.aspx>
로그아웃</a>]</p>");
        }


    }
}

 


				

mod.aspx.cs

 

 

public partial class mod : System.Web.UI.Page
{
    SqlConnection conn; // SQL 
데이터베이스 연결용
    SqlCommand comm, cmdSelect, cmdUpdate; // SQL 
서버에 대해 실행할 문장
    SqlDataAdapter adapter; //DataSet
 채우고 DB 업데이트  데이터 명령을 저장
    DataSet dataset; // 
메모리 내의 데이터 캐시
    protected void Page_Load(object sender, EventArgs e) // 
페이지 로드
    {
        if (!Page.IsPostBack) // 
페이지가 
        {
            string strsql = "select * from tblmemo"// tblmemo 
테이블 선택
            conn = new SqlConnection("server=localhost;database=message;uid=sa;pwd=romantic"); // DB
 message 데이터베이스 연결
            comm = new SqlCommand(strsql, conn); // message DB
 갖고 있는 테이블 중에서 tblmemo 선택한다.
            adapter = new SqlDataAdapter(); //DataSet
 채우고 DB 업데이트  데이터 명령을 저장
            adapter.SelectCommand = comm; // 
위에 있는 comm 연결해 
            dataset = new DataSet(); // dataset
이라고 하는 DataSet(메모리 안의 DB 캐시생성
            adapter.Fill(dataset, "tblmemo");  // dataset
 tblmemo 채운다.(tblmemo 어떤 이름이어도 상관없음)
            DataTable table = dataset.Tables["tblmemo"]; // 
테이블(메모리에 있는 데이터) tblmemo dataset 넣는다.
            DataRow[] row = table.Select("user_id='" + Session["uid"] + "'"); //
아이디 체크: userid Session["uid"] 내용을 비교한다.
            // 
텍스트박스에 기본적으로 사용자 정보를 입력.
            TextBox1.Text = row[0]["user_name"].ToString();
            TextBox2.Text = row[0]["user_id"].ToString();
            TextBox3.Text = row[0]["pass"].ToString();
            TextBox4.Text = row[0]["address"].ToString();
            TextBox5.Text = row[0]["phone"].ToString();
            TextBox6.Text = row[0]["e_mail"].ToString();
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        conn = new SqlConnection("server=localhost;database=message;uid=sa;pwd=romantic"); // DB
 message 데이터베이스 연결
        string str = "select * from tblmemo"// tblmemo 
테이블 선택
        cmdSelect = new SqlCommand(str, conn); // message DB
 갖고 있는 테이블 중에서 tblmemo 선택한다.
        string str1 = "update tblmemo set pass=@pass, user_name=@user_name, address=@address, phone=@phone, e_mail=@e_mail";
        // tblmemo
 업데이트 하기 위해 pass, user_name 등의 칼럼의 별칭을 붙인다.

        str1 += " where user_id='" + Session["uid"] + "'"// Session["uid"]
 값과 user_id 비교해서 일치하는 것을 찾는다.
        cmdUpdate = new SqlCommand(str1, conn); // message 
데이터베이스 중에 위의 조건(str1) 일치하는 것을 업데이트한다.
        cmdUpdate.Parameters.Add(new SqlParameter("@pass"SqlDbType.VarChar, 50, "pass")); // 
칼럼명과 일치하는 자료형 정의
        cmdUpdate.Parameters.Add(new SqlParameter("@user_name"SqlDbType.VarChar, 50, "user_name"));
        cmdUpdate.Parameters.Add(new SqlParameter("@address"SqlDbType.VarChar, 50, "address"));
        cmdUpdate.Parameters.Add(new SqlParameter("@phone"SqlDbType.VarChar, 50, "phone"));
        cmdUpdate.Parameters.Add(new SqlParameter("@e_mail"SqlDbType.VarChar, 50, "e_mail"));
        adapter = new SqlDataAdapter(); // DataSet
 채우고 DB 업데이트  데이터 명령을 저장
        adapter.SelectCommand = cmdSelect; // 
위에 있는 cmdSelect 연결
        adapter.UpdateCommand = cmdUpdate; // 
위에 있는 cmdUpdate 연결
        dataset = new DataSet(); // dataset
이라고 하는 DataSet(메모리 안의 DB 캐시생성
        adapter.Fill(dataset, "tblmemo"); // dataset
 tblmemo 채운다.(tblmemo 어떤 이름이어도 상관없음)
        DataTable table = dataset.Tables["tblmemo"]; // 
테이블(메모리에 있는 데이터) tblmemo dataset 넣는다.
        DataRow[] row = table.Select("user_id='" + Session["uid"] + "'"); //
아이디 체크: userid Session["uid"] 내용을 비교한다.
        // 
텍스트박스에 입력한 값을 row 요소에 저장한다.
        row[0]["pass"] = TextBox3.Text;
        row[0]["user_name"] = TextBox1.Text;
        row[0]["address"] = TextBox4.Text;
        row[0]["phone"] = TextBox5.Text;
        row[0]["e_mail"] = TextBox6.Text;
        adapter.Update(dataset, "tblmemo"); // 
 DB 업데이트 되도록 하는 구문이 바로  부분.
        Response.Write("<script>alert('
개인정보가 성공적으로 수정되었습니다.');</script>"); // 사용자에게 변경 사항을 알림창을 통해 알려준다.
    }
    protected void Button2_Click1(object sender, EventArgs e) // 
취소 버튼을 누를 
    {
        Response.Redirect("user.aspx");
    }
}

 

 

 

 


				

del.aspx.cs

 

 

public partial class del : System.Web.UI.Page
{
    SqlConnection conn; // SQL 
데이터베이스 연결용
    SqlCommand comm, cmdSelect, cmdDelete; // SQL 
서버에 대해 실행할 문장
    SqlDataAdapter adapter; //DataSet
 채우고 DB 업데이트  데이터 명령을 저장
    DataSet dataset; // 
메모리 내의 데이터 캐시

    protected void Page_Load(object sender, EventArgs e)
    {
        conn = new SqlConnection("server=localhost;database=message;uid=sa;pwd=romantic"); // message DB 
선택
        cmdSelect = new SqlCommand("select * from tblmemo", conn); // tblmemo 
테이블 선택(conn으로 명명)

        string str = "delete from tblmemo where user_id=@user_id"// 
테이블의 user_id 별칭 user_id 같은 것을 삭제
        cmdDelete = new SqlCommand(str, conn); // 
위의 조건(테이블) 데이터베이스를 연결시킨다.

        cmdDelete.Parameters.Add(new SqlParameter("@user_id"SqlDbType.VarChar, 50, "user_id")); // 
칼럼명과 일치하는 자료형 정의

        adapter = new SqlDataAdapter(); //  DataSet
 채우고 DB 업데이트  데이터 명령을 저장
        adapter.SelectCommand = cmdSelect; // 
위에 있는 cmdSelect 연결
        adapter.DeleteCommand = cmdDelete; // 
위에 있는 cmdDelete 연결

        dataset = new DataSet(); // dataset
이라고 하는 DataSet(메모리 안의 DB 캐시생성 
        adapter.Fill(dataset, "tblmemo"); // dataset
 tblmemo 채운다.(tblmemo 어떤 이름이어도 상관없음)

        DataTable table = dataset.Tables["tblmemo"];  // 
테이블(메모리에 있는 데이터) tblmemo dataset 넣는다.
        DataRow[] row = table.Select("user_id ='" + Session["uid"] + "'");  //
아이디 체크: userid Session["uid"] 내용을 비교한다.

        row[0].Delete(); // row
 요소를 삭제
        adapter.Update(dataset, "tblmemo"); // 
이것을 실행해야만 변경된 내용이 원본에 적용된다실제 DB 내용이 삭제되도록 하는 구문.

        string str1 = "drop table " + Session["uid"]; // Session["uid"]
 일치하는 이름을 가진 테이블 제거(가입시 회원 아이디명으로 별도 생성되었던 테이블)
        comm = new SqlCommand(str1, conn); // 

        conn.Open(); // 
데이터베이스 연결 열기

        comm.ExecuteNonQuery(); // NonQuery
이기 때문에 실행하고 끝남.
        conn.Close(); // 
데이터베이스 연결 닫음

        Response.Write("<center><h4>" + Session["uid"] + "
 그동안 저희 사이트를 애용해 주셔서 감사합니다.</h4>"); // 
        Response.Write("<p>
그럼 즐거운 시간 되세요.</p><hr /><br /><br />");
        Response.Write("<p>[<a href=main.aspx>
메인페이지</a>]</p></center>");
    }
}

 


				

memo_write.aspx.cs

 

 

public partial class memo_write : System.Web.UI.Page
{
    SqlConnection conn; // SQL 
데이터베이스 연결용
    SqlCommand cmdSelect, cmdUpdate, cmdInsert; // SQL 
서버에 대해 실행할 문장
    SqlDataAdapter adapter; //DataSet
 채우고 DB 업데이트  데이터 명령을 저장
    DataSet dataset; // 
메모리 내의 데이터 캐시

    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        conn = new SqlConnection("server=localhost;database=message;uid=sa;pwd=romantic"); // message DB 
연결

        cmdSelect = new SqlCommand("select * from tblmemo", conn); // tblmemo 
테이블 선택
        string str = "update tblmemo set msg_count=@msg_count where user_id=@user_id"// user_id
 일치하는 tblmemo msg_count 칼럼 업데이트
        cmdUpdate = new SqlCommand(str, conn); // tblmemo 
테이블 내용 중에서 str 조건에 맞는 자료 업데이트

        cmdUpdate.Parameters.Add(new SqlParameter("@msg_count"SqlDbType.Int, 4, "msg_count")); // 
칼럼명과 일치하는 자료형 정의
        cmdUpdate.Parameters.Add(new SqlParameter("@user_id"SqlDbType.VarChar, 50, "user_id"));

        adapter = new SqlDataAdapter(); // DataSet
 채우고 DB 업데이트  데이터 명령을 저장
        adapter.SelectCommand = cmdSelect; // 
위에 있는 cmdSelect 연결
        adapter.UpdateCommand = cmdUpdate; // cmdUpdate
 연결

        dataset = new DataSet(); // dataset
이라고 하는 DataSet(메모리 안의 DB 캐시생성 
        adapter.Fill(dataset, "tblmemo"); // dataset
 tblmemo 채운다.(tblmemo 어떤 이름이어도 상관없음)

        DataTable table = dataset.Tables["tblmemo"]; // 
테이블(메모리에 있는 데이터) tblmemo dataset 넣는다.
        DataRow[] row = table.Select("user_id = '" + TextBox1.Text.ToString() + "'"); // 
아이디 체크: TextBox1 내용과 비교

        row[0]["msg_count"] = (int)(row[0]["msg_count"]) + 1; // msg_count
 값을 1 증가
        adapter.Update(dataset, "tblmemo"); // dataset
 tblmemo 채운다.(tblmemo 어떤 이름이어도 상관없음)

        // 
아이디에 해당하는 테이블에 내용 저장
        str = "insert into " + TextBox1.Text.ToString() + "(from_id,subject,msg,msg_date) values(@from_id, @subject, @msg, @msg_date)";
        cmdInsert = new SqlCommand(str, conn); // message DB
에서 str 조건에 맞는 테이블 선택

        cmdInsert.Parameters.Add(new SqlParameter("@from_id"SqlDbType.VarChar, 50, "from_id")); // 
칼럼명과 일치하는 자료형 정의
        cmdInsert.Parameters.Add(new SqlParameter("@subject"SqlDbType.VarChar, 50, "subject"));
        cmdInsert.Parameters.Add(new SqlParameter("@msg"SqlDbType.Text, 500, "msg"));
        cmdInsert.Parameters.Add(new SqlParameter("@msg_date"SqlDbType.VarChar, 50, "msg_date"));

        cmdSelect = new SqlCommand("select * from " + TextBox1.Text, conn); // 
아이디에 해당하는 테이블 선택
        adapter.SelectCommand = cmdSelect; // 
위에 있는 cmdSelect 연결
        adapter.InsertCommand = cmdInsert; // 
위에 있는 cmdInsert 연결
        adapter.Fill(dataset, "imsi"); // dataset
 imsi 채운다.

        DataTable table1 = dataset.Tables["imsi"]; // 
테이블(메모리에 있는 데이터) imsi dataset 넣는다.
        DataRow row1 = table1.NewRow(); // row1
테이블의  자료 추가
        row1["from_id"] = Session["uid"]; // Session["uid"]
 저장된 아이디를 from_id 저장
        row1["subject"] = TextBox2.Text.ToString(); // 
제목
        row1["msg"] = TextBox3.Text.ToString(); // 
메시지 본문
        row1["msg_date"] = DateTime.Now; // msg_date
 현재 시간 저장

        table1.Rows.Add(row1); // row1
 해당하는 자료 저장
        adapter.Update(dataset, "imsi"); // 
지금 작업했던 것은 메모리 서버에만 있고 SQL서버에는 작업이 전혀 되지 않았다여기서 추가된 내용이 adapter.update 통해 SQL서버에 추가된다.


        Response.Write("<script>alert('
메시지가 성공적으로 전달되었습니다.');location.href='user.aspx'</script>"); // 메시지가 제대로 전달되면 알려주고 user.aspx 이동
    }
}

 

 

 

 

 

 


				

check_id.aspx.cs

 

 

 

public partial class check_id : System.Web.UI.Page
{

    SqlConnection conn; // SQL 
데이터베이스 연결용
    SqlCommand cmdSelect; // SQL 
서버에 대해 실행할 문장
    SqlDataAdapter adapter; //DataSet
 채우고 DB 업데이트  데이터 명령을 저장
    DataSet dataset; // 
메모리 내의 데이터 캐시

    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e) // 
확인 단추를 눌렀을 
    {
        Panel1.Visible = false// Panel1
 보이지 않게 
        string strsql = "select * from tblmemo"// tblmemo 
테이블 선택
        conn = new SqlConnection("server=localhost;database=message;uid=sa;pwd=romantic"); // message DB 
연결
        cmdSelect = new SqlCommand(strsql, conn); // message DB
에서 tblmemo 선택

        adapter = new SqlDataAdapter(); // DataSet
 채우고 DB 업데이트  데이터 명령을 저장
        adapter.SelectCommand = cmdSelect; // 
위에 있는 cmdSelect 연결
        dataset = new DataSet(); // dataset
이라고 하는 DataSet(메모리 안의 DB 캐시생성
        adapter.Fill(dataset, "tblmemo"); // dataset
 tblmemo 채운다.(tblmemo 어떤 이름이어도 상관없음)

        string thenname = TextBox1.Text.ToString(); // string 
 thenname 변수에 TextBox1 입력한 값을 넣는다
        DataTable table = dataset.Tables["tblmemo"]; // 
테이블(메모리에 있는 데이터) tblmemo dataset 넣는다.
        DataRow[] row = table.Select("user_name = '" + thenname + "'"); // 
아이디 체크: thenname 내용과 비교

        if (row.Length > 0) // 
아이디가 존재할 
        {
            Response.Write("<center<br><br><br><table border=1 width=350>"); // 
테이블 생성
            Response.Write("<tr height=20><th>
이름<th>아이디<th>주소");
            for (int i = 0; i < row.Length; i++) // 
같은 이름으로  자료가 여러  있을  있으므로 결과 모두 출력
            {
                Response.Write("<tr height=20 align=center>");
                Response.Write("<td>" + row[i]["user_name"] + "<td>" + row[i]["user_id"] + "<td>" + row[i]["address"]);
            }
            Response.Write("</table>");
        }
        else // 
아이디가 존재하지 않을  
            Response.Write(thenname + "
() <br>존재하지 않는 회원입니다.");
    }
}

 

 

 

 

 


				

memo_list.aspx.cs

 

 

 

public partial class memo_list : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string str = "select * from " + Session["uid"] + " order by num desc"// Session["uid"] 
 일치하는 이름을 가진 테이블 중에서메시지가  순서대로 정렬


        SqlConnection conn = new SqlConnection("server=localhost;database=message;uid=sa;pwd=romantic"); // message DB 
연결
        SqlCommand comm = new SqlCommand(str, conn); // message DB 
중에서 str에서 설정한 조건에 맞는 테이블 선택

        SqlDataAdapter adapter = new SqlDataAdapter(); // DataSet
 채우고 DB 업데이트  데이터 명령을 저장
        adapter.SelectCommand = comm; // 
위에 있는 comm 연결

        DataSet dataset = new DataSet(); // dataset
이라고 하는 DataSet(메모리 안의 DB 캐시생성 
        adapter.Fill(dataset, "imsi"); // dataset
 imsi 채운다.(imsi 어떤 이름이어도 상관없음)

        DataTable table = dataset.Tables["imsi"]; // 
테이블(메모리에 있는 데이터) imsi dataset 넣는다.
        DataRow[] row = table.Select(); // 
 테이블의 배열을 row 저장

        Response.Write("<center><h2>
리스트 보기</h2><hr />"); // 본문 시작
        Response.Write("<br /><table border=3 width=550>");
        Response.Write("<tr><th>
번호<th>보낸이<th>제목<th>받은 날짜</th></tr>");

        for (int i = 0; i < row.Length; i++) // 
찾아낸 결과 만큼 출력
        {
            Response.Write("<tr height=20>");
            Response.Write("<td width=8% align=center>" + (i + 1) + "<th width=17% align=center>" + row[i]["from_id"]);
            // detail_view.aspx 
페이지를 호출할  ?id 속성에 있는 num 근거로 한다.(추후 사용자 페이지에 있는 num 속성을 사용할 계획)
            Response.Write("<td width=40%><a href=detail_view.aspx?id=" + row[i]["num"] + ">" + row[i]["subject"] + "</a><td width=35%>" + row[i]["msg_date"] + "</tr>");
        }
        Response.Write("</table><br /><p><a href=user.aspx>
사용자 페이지로</a></p>");
    }
}

 


				

detail_view.aspx.cs

 

 

 

public partial class detail_view : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e) // 
페이지 로드 이벤트
    {
        string idstr = Request.QueryString["id"]; // 
방금  페이지에서 받아  num값을 idstr 저장한다.
        string str = "select * from " + Session["uid"]; // Session["uid"] (
아이디를 이름으로 갖는 사용자 테이블선택
        SqlConnection conn = new SqlConnection("server=localhost;database=message;uid=sa;pwd=romantic"); // message DB 
연결
        SqlCommand comm = new SqlCommand(str, conn); // message DB 
중에서 사용자 테이블 선택

        SqlDataAdapter adapter = new SqlDataAdapter(); // DataSet
 채우고 DB 업데이트  데이터 명령을 저장
        adapter.SelectCommand = comm; // 
위에 있는 comm 연결

        DataSet dataset = new DataSet(); // dataset
이라고 하는 DataSet(메모리 안의 DB 캐시생성 
        adapter.Fill(dataset, "temp"); // dataset
 temp 채운다.(temp 어떤 이름이어도 상관없음)

        DataTable table = dataset.Tables["temp"]; // 
테이블(메모리에 있는 데이터) temp dataset 넣는다.
        DataRow[] row = table.Select("num = " + idstr); // 
메시지를 특정하기 위해 num값을 사용일치하는 메모를 불러옴

        Response.Write("<center><h2>
상세 보기</h2><hr /><br /><br />"); // 본문 시작
        Response.Write("<table border=3><tr><th width=15%>
보낸이<td>");
        Response.Write(row[0]["from_id"] + "<tr><th>
제목<td>"); // 보낸이

        string cont = row[0]["msg"].ToString(); // 
메시지를 string 변수에 저장
        Response.Write(row[0]["subject"] + "<tr><th>
내용<td>"); // 제목
        Response.Write("<xmp>" + cont + "</xmp></table>"); // 
유니코드 표시 위해 <xmp> 태그로 감싸서 메시지 출력

        Response.Write("<p align=center>[<a href=reply.aspx?id=" + row[0]["from_id"] + ">
답변하기</a>] ");
        Response.Write("[<a href=delete.aspx?num=" + row[0]["num"] + ">
삭제하기</a>]");
        Response.Write("</p><br><br>");
    }
}

 

 


				

reply.aspx.cs

 

 

 

public partial class reply : System.Web.UI.Page
{
    SqlConnection conn; // SQL 
데이터베이스 연결용
    SqlCommand cmdSelect, cmdUpdate, cmdInsert; // SQL 
서버에 대해 실행할 문장
    SqlDataAdapter adapter; //DataSet
 채우고 DB 업데이트  데이터 명령을 저장
    DataSet dataset; // 
메모리 내의 데이터 캐시

    protected void Page_Load(object sender, EventArgs e)
    {
        string idd = Request.QueryString["id"]; // 
방금  페이지에서 받아  num값을 idstr 저장한다.
        TextBox1.Text = idd;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        conn = new SqlConnection("server=localhost;database=message;uid=sa;pwd=romantic"); // message DB 
연결

        cmdSelect = new SqlCommand("select * from tblmemo", conn); // tblmemo 
테이블 선택
        string str = "update tblmemo set msg_count=@msg_count where user_id=@user_id"// user_id
 일치하는 tblmemo msg_count 칼럼 업데이트
        cmdUpdate = new SqlCommand(str, conn); // tblmemo 
테이블 내용 중에서 str 조건에 맞는 자료 업데이트

        cmdUpdate.Parameters.Add(new SqlParameter("@msg_count"SqlDbType.Int, 4, "msg_count")); // 
칼럼명과 일치하는 자료형 정의
        cmdUpdate.Parameters.Add(new SqlParameter("@user_id"SqlDbType.VarChar, 50, "user_id"));

        adapter = new SqlDataAdapter(); // DataSet
 채우고 DB 업데이트  데이터 명령을 저장
        adapter.SelectCommand = cmdSelect; // 
위에 있는 cmdSelect 연결
        adapter.UpdateCommand = cmdUpdate; // cmdUpdate
 연결

        dataset = new DataSet(); // dataset
이라고 하는 DataSet(메모리 안의 DB 캐시생성 
        adapter.Fill(dataset, "tblmemo"); // dataset
 tblmemo 채운다.(tblmemo 어떤 이름이어도 상관없음)

        DataTable table = dataset.Tables["tblmemo"]; // 
테이블(메모리에 있는 데이터) tblmemo dataset 넣는다.
        DataRow[] row = table.Select("user_id = '" + TextBox1.Text.ToString() + "'"); // 
아이디 체크: TextBox1 내용과 비교

        row[0]["msg_count"] = (int)(row[0]["msg_count"]) + 1; // msg_count
 값을 1 증가
        adapter.Update(dataset, "tblmemo"); // dataset
 tblmemo 채운다.(tblmemo 어떤 이름이어도 상관없음)

        // 
아이디에 해당하는 테이블에 내용 저장
        str = "insert into " + TextBox1.Text.ToString() + "(from_id,subject,msg,msg_date) values(@from_id, @subject, @msg, @msg_date)";
        cmdInsert = new SqlCommand(str, conn); // message DB
에서 str 조건에 맞는 테이블 선택

        cmdInsert.Parameters.Add(new SqlParameter("@from_id"SqlDbType.VarChar, 50, "from_id")); // 
칼럼명과 일치하는 자료형 정의
        cmdInsert.Parameters.Add(new SqlParameter("@subject"SqlDbType.VarChar, 50, "subject"));
        cmdInsert.Parameters.Add(new SqlParameter("@msg"SqlDbType.Text, 500, "msg"));
        cmdInsert.Parameters.Add(new SqlParameter("@msg_date"SqlDbType.VarChar, 50, "msg_date"));

        cmdSelect = new SqlCommand("select * from " + TextBox1.Text, conn); // 
아이디에 해당하는 테이블 선택

        adapter.SelectCommand = cmdSelect; // 
위에 있는 cmdSelect 연결
        adapter.InsertCommand = cmdInsert; // 
위에 있는 cmdInsert 연결

        adapter.Fill(dataset, "imsi"); // dataset
 imsi 채운다.

        DataTable table1 = dataset.Tables["imsi"]; // 
테이블(메모리에 있는 데이터) imsi dataset 넣는다.
        DataRow row1 = table1.NewRow(); // row1
테이블의  자료 추가
        row1["from_id"] = Session["uid"]; // Session["uid"]
 저장된 아이디를 from_id 저장
        row1["subject"] = TextBox2.Text.ToString(); // 
제목
        row1["msg"] = TextBox3.Text.ToString(); // 
메시지 본문
        row1["msg_date"] = DateTime.Now; // msg_date
 현재 시간 저장

        table1.Rows.Add(row1); // row1
 해당하는 자료 저장
        adapter.Update(dataset, "imsi"); // 
지금 작업했던 것은 메모리 서버에만 있고 SQL서버에는 작업이 전혀 되지 않았다여기서 추가된 내용이 adapter.update 통해 SQL서버에 추가된다.
        Response.Write("<script>alert('
메시지가 성공적으로 전달되었습니다.');location.href='user.aspx'</script>"); // 메시지가 제대로 전달되면 알려주고 user.aspx 이동
    }
    protected void Button2_Click(object sender, EventArgs e)
    {

    }

 

 

 

 

 

 


				

delete.aspx.cs

 

 

public partial class delete : System.Web.UI.Page
{
    SqlConnection conn; // SQL 
데이터베이스 연결용
    SqlCommand cmdselect, cmddelete, cmdselect1, cmdupdate; // SQL 
서버에 대해 실행할 문장
    SqlDataAdapter adapter; //DataSet
 채우고 DB 업데이트  데이터 명령을 저장
    DataSet dataset; // 
메모리 내의 데이터 캐시

    protected void Page_Load(object sender, EventArgs e) // 
페이지 로드 이벤트
    {
        if (!Page.IsPostBack)
        {
            conn = new SqlConnection("server=(local);database=message;uid=sa;pwd=romantic;"); // message DB 
연결
            string temp = Request.QueryString["num"]; // 
이전 페이지에서 num 값을 가져와서 저장
            string str = "delete from " + Session["uid"].ToString() + " where num=@num"// 
사용자 테이블(Session["uid"] 정보 활용)에서 num값을 가진 자료 삭제
            string selectstr = "select * from tblmemo"// tblmemo 
테이블 선택
            string updatestr = "update tblmemo set msg_count=@msg_c where user_id='" + Session["uid"].ToString() + "'"// tblmemo 
테이블에서 사용자 이름에 해당하는 msg_count 자료의 값을 업데이트

            cmdselect = new SqlCommand("select * from " + Session["uid"].ToString(), conn); // 
사용자 테이블(Session["uid"] 정보 활용)
            cmddelete = new SqlCommand(str, conn); // message DB
에서 사용자 테이블 선택
            cmdselect1 = new SqlCommand(selectstr, conn); // message DB
에서 tblmemo 테이블 선택
            cmdupdate = new SqlCommand(updatestr, conn); // message DB
에서 tblmemo 테이블의 사용자 이름에 해당하는 msg_count 자료의 값을 업데이트

            cmddelete.Parameters.Add(new SqlParameter("@num"SqlDbType.VarChar, 50, "num")); // 
칼럼에 알맞은 자료형 정의

            adapter = new SqlDataAdapter(); //  DataSet
 채우고 DB 업데이트  데이터 명령을 저장
            adapter.SelectCommand = cmdselect; // 
위에 있는 cmdSelect 연결
            adapter.DeleteCommand = cmddelete; // 
위에 있는 cmdDelete 연결

            dataset = new DataSet(); // dataset
이라고 하는 DataSet(메모리 안의 DB 캐시생성 
            adapter.Fill(dataset, Session["uid"].ToString()); // dataset
 채운다.

            DataTable table = dataset.Tables[Session["uid"].ToString()]; // 
테이블(메모리에 있는 데이터) dataset 넣는다.
            DataRow[] row1 = table.Select("num='" + temp + "'"); // 
이전 페이지에서 num 값을 가져와서 테이블의 값과 일치하는 것을 선택

            row1[0].Delete(); // row1
 요소를 삭제

            adapter.Update(dataset, Session["uid"].ToString()); // 
변경한 내용을 실제 원본에 적용

            adapter.SelectCommand = cmdselect1; // cmdselect1
 연결
            adapter.Fill(dataset, "tblmemo"); // dataset
 채운다.
            adapter.UpdateCommand = cmdupdate; // cmdupdate
 연결

            cmdupdate.Parameters.Add(new SqlParameter("@msg_c"SqlDbType.Int, 4, "msg_count")); // 
칼럼에 알맞은 자료형 정의

            table = dataset.Tables["tblmemo"]; // table(
메모리에 있는 자료) tblmemo 넣는다
            DataRow[] row = table.Select("user_id='" + Session["uid"].ToString() + "'"); // user_id
 Session["uid"] 일치하는 테이블 선택해서 row 저장

            row[0]["msg_count"] = Int32.Parse(row[0]["msg_count"].ToString()) - 1; // row
 자료  msg_count 값을 1 감소

            adapter.Update(dataset, "tblmemo"); // 
실제 DB 반영

            Response.Write("<script>alert('
메세지가 삭제되었습니다.');location.href='memo_list.aspx';</script>"); // 삭제 사실을 알리고 memo_list.aspx 리턴
        }
    }
}

 

 

 

 

 


				

registrer.aspx.cs

 

public partial class register : System.Web.UI.Page
{
    SqlConnection conn; // SQL 
데이터베이스 연결용
    SqlCommand comm, cmdInsert; // SQL 
서버에 대해 실행할 문장
    SqlDataAdapter adapter; //DataSet
 채우고 DB 업데이트  데이터 명령을 저장
    DataSet dataset; // 
메모리 내의 데이터 캐시

    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void Button1_Click(object sender, EventArgs e) // 
회원 가입 버튼을 눌렀을 
    {
        if (TextBox2.Text.ToString() == ""// 
아이디 란에 입력한 문자가 없으면
            Response.Write("<script>alert('
아이디 중복체크를 확인하세요.');</script>");
        else
        {
            string strsql = "select * from tblmemo"// tblmemo 
테이블 선택
            conn = new SqlConnection("server=localhost;database=message;uid=sa;pwd=romantic"); // message 
데이터베이스 연결
            comm = new SqlCommand(strsql, conn); // message DB 
중에서 tblmemo 선택

            adapter = new SqlDataAdapter(); //DataSet
 채우고 DB 업데이트  데이터 명령을 저장
            adapter.SelectCommand = comm; // 
위에 있는 comm 연결해 
            dataset = new DataSet(); // dataset
이라고 하는 DataSet(메모리 안의 DB 캐시생성
            adapter.Fill(dataset, "tblmemo"); // 
같은 테이블이다전체를 갖다 얹음원본 데이터와 연결 끊어도 상관없는 비연결 기반.

            DataTable table = dataset.Tables["tblmemo"]; // 
여러 개의 dataset tblmemo 지칭
            DataRow[] row = table.Select("user_id = '" + TextBox2.Text.ToString() + "'"); // user_id
 같은 것이 있는지 검색. row 쉽게 풀어쓰면 table이다여기서 row라고 함은 0 또는 1 이상의 행을 가질  있다.

            if (row.Length > 0) // 
같은 행이   이상 있다면 사용중인 아이디가 된다.
            {
                Response.Write("<script>alert('
이미 사용중인 아이디입니다')</script>"); //알림 창을 통해 사용중인 아이디가 있다는 것을 알림
                TextBox2.Focus(); // 
캐럿이 TextBox2에서 깜빡이게 .
            }
            else // 
같은 행이 없다면 사용 가능하다.
                Response.Write("<script>alert('
사용 가능한 아이디입니다')</script>"); // 알림 창에 나타나는 메시지
        }
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        string sqlstr = "select * from tblmemo"// tblmemo 
테이블 선택
        conn = new SqlConnection("server=localhost;database=message;uid=sa;pwd=romantic;"); // message DB 
연결
        comm = new SqlCommand(sqlstr, conn); // message DB
에서 tblmemo 선택

        adapter = new SqlDataAdapter(); // DataSet
 채우고 DB 업데이트  데이터 명령을 저장
        adapter.SelectCommand = comm; // 
위에 있는 comm 연결
        dataset = new DataSet(); // dataset
이라고 하는 DataSet(메모리 안의 DB 캐시생성 
        adapter.Fill(dataset, "tblmemo"); // dataset
 tblmemo 채운다.(tblmemo 어떤 이름이어도 상관없음)

        DataTable table = dataset.Tables["tblmemo"]; // 
테이블(메모리에 있는 데이터) tblmemo dataset 넣는다.
        DataRow[] row = table.Select("user_id = '" + TextBox2.Text.ToString() + "'"); //
아이디 체크: userid TextBox2 내용을 비교한다.

        if (row.Length > 0) // id 
확인을 누르지 않은 사람을 위해 다시 검사.
        {
            Response.Write("<script>alert('
이미 등록된 아이디입니다')</script>"); // 경고 창을 통해 이미 등록된 사용자라는 것을 알려줌
            TextBox2.Text = "";
        }
        else
        {
            // tblmemo
 user_id, pass 등의 값을 대입하기 위해 각각 별칭을 생성
            string strsql = "insert into tblmemo(user_id,pass,user_name,address,phone,e_mail,msg_count) values (@user_id,@pass,@user_name,@address,@phone,@email,@msg_count)";

            cmdInsert = new SqlCommand(strsql, conn); // message 
데이터베이스에서 strsql 실행한다.(tblmemo  입력)
            adapter.InsertCommand = cmdInsert; //
위에 있는 cmdInsert 연결

            // 
칼럼명과 일치하는 자료형 정의
            cmdInsert.Parameters.Add(new SqlParameter("@user_id"SqlDbType.VarChar, 50, "user_id"));
            cmdInsert.Parameters.Add(new SqlParameter("@pass"SqlDbType.VarChar, 50, "pass"));
            cmdInsert.Parameters.Add(new SqlParameter("@user_name"SqlDbType.VarChar, 50, "user_name"));
            cmdInsert.Parameters.Add(new SqlParameter("@address"SqlDbType.VarChar, 50, "address"));
            cmdInsert.Parameters.Add(new SqlParameter("@phone"SqlDbType.VarChar, 50, "phone"));
            cmdInsert.Parameters.Add(new SqlParameter("@email"SqlDbType.VarChar, 50, "e_mail"));
            cmdInsert.Parameters.Add(new SqlParameter("@msg_count"SqlDbType.Int, 4, "msg_count"));

            DataRow row1 = table.NewRow(); // row1 
테이블의  자료 추가
            row1["user_id"] = TextBox2.Text.ToString(); // 
텍스트박스에 입력한 내용을 저장(user_id)
            row1["pass"] = TextBox3.Text.ToString(); // password
            row1["user_name"] = TextBox1.Text.ToString(); // 
사용자명
            row1["address"] = TextBox4.Text.ToString(); // 
주소
            row1["phone"] = TextBox5.Text.ToString(); // 
전화
            row1["e_mail"] = TextBox6.Text.ToString(); // 
이메일
            row1["msg_count"] = 0; // 
받은 메시지(msg_count) 0으로 초기화
            table.Rows.Add(row1); // row1
 해당하는 자료 추가
            adapter.Update(dataset, "tblmemo"); // 
지금 작업했던 것은 메모리 서버에만 있고 SQL서버에는 작업이 전혀 되지 않았다여기서 추가된 내용이 adapter.update 통해 SQL서버에 추가된다.

            string str1 = "create table " + TextBox2.Text.ToString(); // 
테이블 이름은 아이디(textbox2) 그대로 사용
            str1 += " ( num int identity(1,1) primary key,"// 1
부터 시작해 1 증가.(PK)
            str1 += "from_id varchar(50) not null,"// 
칼럼   속성 정의
            str1 += "subject varchar(50) not null,";
            str1 += "msg varchar(500),";
            str1 += "msg_date varchar(50) not null)";
            conn.Open(); // 
데이터베이스 연결 열기
            comm.CommandText = str1; // str1
 해당하는 
            comm.ExecuteNonQuery(); // 
비연결기반. ExecuteReader 마찬가지.
            conn.Close(); // 
데이터베이스 연결 닫기
            Response.Redirect("main.aspx"); // 
작업이 끝나면 main 페이지로 돌아온다.
        }
    }
}

반응형

'프로그래밍 실습 > ASP' 카테고리의 다른 글

성적 관리: 비연결 기반  (0) 2011.07.10
,