아래 그림의 순서대로 "ToDoList"라는 이름으로 "빈 솔루션"으로 프로젝트를 만들고, 만들어진
"ToDoList" 솔루션의 "솔루션 탐색기"에서 [추가] - [새 프로젝트] 방법을 통해서 "윈폼/웹사이트/WPF" 3가지로 만들고 이름은 각각 "WinToDoList/WebToDoList/WPFToDoList"로 정한다.
3개의 응용 프로그램으로 "ToDoList"프로젝트를 생성한 이후에는 3가지중 윈폼 프로젝트("WinToDoList")에서만 실습하였다.(참고로, Silverlight관련된 Tool도 Visual Studio에 깔려있으면 "Silverlight 응용 프로그램"도 "새 프로젝트"만들기(추가)를 통해 만들(추가할) 수 있다.) 




















--> "ToDoList"솔루션 탐색기에 각각 "WinToDoList/WebToDoList/WPFToDoList" 생성된 것을 볼 수 있다.





- 여기서는 윈폼으로 만든 "WinToDoList"프로젝트에서만 실습해본다.
-  SQL Server에서 "ToDoList"라는 데이터베이스를 새로 만들고, [보안] - [새로만들기] - [로그인]에서 "ToDoList"라는 이름으로 '로그인 사용자'를 '추가'한다.
- '로그인 사용자'를 '추가'한 다음에는 "ToDoList"데이터베이스로 선택한 후 "새 쿼리"버튼을 눌러 "ToDoList.sql"이라는 이름으로 쿼리문을 작성한다.


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

 

==> ToDoList.sql 소스

 

-- ToDo List용테이블생성

Create Table Items

(

       ID Int Identity(1, 1) Primary Key,      -- 일련번호

       Description VarChar(8000) Not Null,     -- 설명

       Opened DateTime Default(GetDate()),     -- 등록일

       Closed DateTime Null,                   -- 완료일

       Priority TinyInt Default(1)  -- 우선순위(1:높음, 2:보통, 3:낮음)

)

Go

 

 

-- 6가지예시문: 입력, 출력, 상세, 수정, 삭제, 검색

 

-- 입력

Insert Items Values('ToDoList 만들기', GetDate(), '2009-10-01', 1)

Insert Items Values('ToDoList 만든거분석하기', GetDate(), '2009-10-01', 2)

Insert Items Values('집에가기', GetDate(), '2009-10-01', 3)

Go

 

-- 출력

Select * From Items

Go

 

-- 상세

Select Description From Items Where ID = 1

Go

 

-- 수정

Update Items Set Description = 'ToDoList 만든거수정해보기' Where ID = 2

Go

 

-- 삭제

Delete Items Where ID = 3

Go

 

-- 검색

Select Closed, Priority From Items Where [Description] Like '%'

Go

 

-- TODO

 

 

-- 6가지저장프로시저

 

-- 입력저장프로시저

Create Proc dbo.AddItem

       @Description VarChar(8000),

       @Priority TinyInt

As

       Insert Into Items(Description, Priority) Values(@Description, @Priority)

Go

 

-- 출력저장프로시저

Create Proc dbo.GetItems  

As

       Select * From Items Order By ID Asc

Go

 

-- 상세저장프로시저

Create Proc dbo.GetItem

       @ID Int

As

       Select * From Items Where ID = @ID

Go

 

-- 수정저장프로시저

Create Proc dbo.UpdateItem

       @ID Int,

       @Description VarChar(8000),

       @Opened DateTime,

       @Closed DateTime,

       @Priority TinyInt

As

       Update Items

       Set

             Description = @Description,

             Opened = @Opened,

             Closed = @Closed,

             Priority = @Priority

       Where ID = @ID

Go

 

-- 삭제저장프로시저

Create Proc dbo.DeleteItem

       @ID Int

As

       Delete Items Where ID = @ID

Go

 

-- 검색저장프로시저

Create Proc dbo.GetItemsByDescription

       @SearchQuery VarChar(25)

As

       Declare @str VarChar(500)

       Set @str = '

             Select * From Items

             Where Description Like ''%' + @SearchQuery + '%''

       '

       Exec(@str)

Go

 

 

-- 예시데이터입력

Exec AddItem '오늘은ToDoList를만들자.', 1

Exec AddItem '오늘은ToDoList를분석하자.', 2

 




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



==> Form1.cs [디자인]




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

 

==> Form1.cs 소스

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlClient;

 

namespace WinToDoList

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        private DataSet ds; // 데이터셋

        private SqlDataAdapter da; // 데이터어댑터

        private DataTable dt; // 데이터테이블

 

        private void Form1_Load(object sender, EventArgs e)

        {

            SqlConnection con = new SqlConnection(

                "server=.;database=ToDoList;uid=ToDoList;pwd=6750440;");

           

            SqlCommand cmd = new SqlCommand();

            cmd.Connection = con;

 

            cmd.CommandText = "Select * From Items";

            cmd.CommandType = CommandType.Text;

 

            da = new SqlDataAdapter("Select * From Items", con); // SelectCommand

 

            // InsertCommand

            cmd = new SqlCommand();

            cmd.Connection = con; //

            cmd.CommandText = "AddItem"; // SP(저장프로시저) 사용

            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.Add("@Description", SqlDbType.VarChar, 8000, "Description");

            cmd.Parameters.Add("@Priority", SqlDbType.TinyInt, 8, "Priority");

            da.InsertCommand = cmd;

 

            // UpdateCommand

            cmd = new SqlCommand();

            cmd.Connection = con; //

            cmd.CommandText = "UpdateItem"; // SP

            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.Add("@Description", SqlDbType.VarChar, 8000, "Description");

            cmd.Parameters.Add("@Priority", SqlDbType.TinyInt, 8, "Priority");

            cmd.Parameters.Add("@Opened", SqlDbType.DateTime, 32, "Opened");

            cmd.Parameters.Add("@Closed", SqlDbType.DateTime, 32, "Closed");

            cmd.Parameters.Add("@ID", SqlDbType.Int, 32, "ID");

            da.UpdateCommand = cmd;           

 

            // DeleteCommand

            cmd = new SqlCommand();

            cmd.Connection = con; //

            cmd.Parameters.Clear();

            cmd.CommandText = "DeleteItem";

            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.Add("@ID", SqlDbType.Int, 32, "ID");

            da.DeleteCommand = cmd;           

 

            ds = new DataSet();

 

            da.Fill(ds, "Items");

 

            dt = ds.Tables[0];

 

            this.ctlToDoList.DataSource = dt;

        }

 

        private void btnUpdate_Click(object sender, EventArgs e)

        {

            da.Update(dt); // 업데이트

        }

    }

}


 

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



[실행결과]



--> 실행전 [SQL Server]의 [dbo.Items]테이블의 화면





--> 실행(F5)하여 "폼"의 "dataGridView"에 출력된 [dbo.Items]테이블의 데이터를 아래그림과 같이 "입력(InsertCommand)/수정(UpdateCommand)/삭제(DeleteCommand)"하고 "변경 사항 저장하기"버튼을 누르면...




--> [SQL Server]의 [dbo.Items]테이블을 다시 '실행'하여 조회(출력)해보면 "폼"의 "dataGridView"에서 "입력/수정/삭제"한대로 [dbo.Items]테이블의 데이터가 아래그림에서 변경된 것을 볼 수 있다.


 

 

Posted by holland14
: