ToDoList 프로그램(작업 목록) 만들기
.NET프로그래밍/ADO.NET 2009. 10. 1. 10:04 |
아래 그림의 순서대로 "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]테이블의 데이터가 아래그림에서 변경된 것을 볼 수 있다.
'.NET프로그래밍 > ADO.NET' 카테고리의 다른 글
WinLINQ(컨트롤 기반 LINQ to SQL - dbml파일) (0) | 2009.10.01 |
---|---|
"마법사"(컨트롤기반)를 사용하여 ToDoList데이터베이스의 [dbo.Items]테이블의 데이터 가져오기 (0) | 2009.10.01 |
LINQ to SQL (0) | 2009.09.30 |
LINQ to DataSet (0) | 2009.09.30 |
WinBinding(SqlDataAdapter클래스 내용에서 보충) (0) | 2009.09.30 |