뇌를 자극하는 SQL Server 2005

Download Report

Transcript 뇌를 자극하는 SQL Server 2005

C#
O/R 디자이너- LINQ 이용
O/R 디자이너
LINQ
• LINQ(Language INtegrated Query)
; 닷넷 프로레임워크 3.5에서 지원하는 데이터 다루는 방법
• 언어에 독입적인 쿼리문
; 언어(쿼리 대상인 데이터 소스, 쿼리 실행 언어)
• 쿼리 대상 : SQL 테이블, XML 문서, 오브젝트, 텍스트파일  데이
터 소스에 따라서 문법이 다름
; 데이터 베이스 (SQL), XML(XPath)
c#
2 / 33
O/R 디자이너
LINQ
• LINQ 범주
▫ LINQ to Object
▫ LINQ to DataSet
▫ LINQ to SQL
▫ LINQ to Entities
▫ LINQ to XML
c#
3 / 33
O/R 디자이너
LINQ의 위치
언어1
VB
C#
언어2
LINQ to ADO.NET
LINQ to
Object
Object
c#
LINQ to
Object
LINQ to
Object
RDB
LINQ to
Object
LINQ to
Object
XML
4 / 33
O/R 디자이너
LINQ의 장점
• 간결한 구문으로 쿼리 방식을 간소화한다. 꼭 필요한 지시 사항만
밝힘으로써 원하는 데이터를 간편하게 얻을 수 있다.
• 데이터 소스에 상관없이 일관된 쿼리 문법이 적용된다. 그 자체가
통합을 지향하고 있으므로 일관적이다. 한번 배우면 똑같은 문법을
여러 대상에서 사용 가능하다.
• 객체 지향적이다. 관계형 데이터베이스는 객체 지향과 거리가 멀지
만 LINQ 를 쓰면 객체 지향의 여러 가지 이점을 취할 수 있다.
• 강력한 타입을 지원하며 모든 에러를 컴파일 중에 점검할 수 있어
개발 속도가 빨라지고 안정성도 확보된다. 인텔리센스와 디버거의
도움도 받을 수 있다.
c#
5 / 33
O/R 디자이너
메모리 내의 컬렉션을 대상으로 LINQ 실습
c#
6 / 33
O/R 디자이너
메모리 내의 컬렉션을 대상으로 LINQ 실습
정수 배열 ar 에서 3의 배수 출력
using System;
using System.Collections.Generic;
using System.Linq;
class CSTest
{
static void Main()
{
int[] ar = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var Query = from n in ar where (n % 3 == 0) select n;
foreach (int k in Query)
{
Console.WriteLine(k);
}
}
from 순회변수
in
데이터 소스
}
c#
7 / 33
O/R 디자이너
메모리 내의 컬렉션을 대상으로 LINQ 실습
파일 목록 출력
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.IO;
class CSTest
{
static void Main()
{
var Files = from f in Directory.GetFiles("c:\\") select f;
foreach (var f in Files)
{
Console.WriteLine("이름 : " + f);
}
}
}
c#
8 / 33
O/R 디자이너
메모리 내의 컬렉션을 대상으로 LINQ 실습
쿼리 표현식
from
c#
where
orderby
let
select
group
9 / 33
O/R 디자이너
메모리 내의 컬렉션을 대상으로 LINQ 실습
using System;
using System.Collections.Generic;
using System.Linq;
class People
{
public People(string aName, int aAge, bool aMale)
{ Name = aName; Age = aAge; Male = aMale; }
public string Name;
public int Age;
public bool Male;
}
class CSTest
{
static void Main()
{
People[] arPeople = { new People("정우성", 36, true), new People("고소영", 32,
false) ,new People("배용준", 37, true), new People("김태희", 29, false) };
// IEnumerable<People> Query = from p in arPeople select p; // 아래 문장과 같은 결과
var Query = from p in arPeople select p;
foreach (People k in Query)
{
Console.WriteLine("이름 : " + k.Name + ", 나이 : " + k.Age + ", 남자 : " + k.Male);
}
}
}
c#
10 / 33
O/R 디자이너
O/R 디자이너에서 LINQ 사용 예
c#
11 / 33
O/R 디자이너
프로젝트 클릭
c#
12 / 33
O/R 디자이너
1. Windows Forms 응용프로그램 선택
2. 확인 클릭
c#
13 / 33
O/R 디자이너
c#
ListBox 드레그
14 / 33
O/R 디자이너
새 항목 클릭
c#
15 / 33
O/R 디자이너
1. LINQ to SQL 클래스 선택
2. 추가 클릭
c#
16 / 33
O/R 디자이너
2. 엔터티 클래스 창
c#
1. 추가된 클래스 확인
3. 메서드 창
17 / 33
O/R 디자이너
서버 탐색기 창 클릭
c#
18 / 33
O/R 디자이너
테이블 드레그(Address)
c#
19 / 33
O/R 디자이너
c#
1. DataClasses1.designer.cs 더블 클릭 후
2. 자동 작성된 소스 확인 : Address 테이블 부분)
20 / 33
O/R 디자이너
MSSMS 에서 저장 프로시저 만들기
1. ADOTest 데이터베이스 클릭
2. 새 쿼리 클릭
3. 오른쪽 텍스트 카피하여 새 쿼리창에서 실행
c#
CREATE PROCEDURE myProc
AS
SELECT * FROM Address WHERE Name = '홍길동';
exec myProc ;
21 / 33
O/R 디자이너
비쥬얼 스튜디오 창
c#
저장 프로시저(myProc)를 메서드 창에 드레그
22 / 33
O/R 디자이너
c#
1. DataClasses1.designer.cs 더블 클릭
2. 생성된 저장 프로시저(dbo.myPorc 부분) 확인
23 / 33
O/R 디자이너
c#
1. Forms1.cs 더블 클릭
2. 윈도우 폼 더블 클릭
24 / 33
O/R 디자이너
1. 아래 내용 코딩 입력
(다음 페이지)
c#
25 / 33
O/R 디자이너
코딩할 내용
DataClasses1DataContext db = new DataClasses1DataContext();
System.Data.Linq.Table<Address> Address = db.GetTable<Address>();
var Query = from A in Address select A;
foreach (Address k in Query)
{
listBox1.Items.Add(string.Format("이름 : " + k.name + ", 주소 : " + k.addr));
}
db.myProc();
c#
26 / 33
O/R 디자이너
디버깅하지 않고 시작 클릭
c#
27 / 33
O/R 디자이너
c#
28 / 33