2017년 3월 31일 금요일

[오라클교육/SQL교육/IT교육/실무중심교육학원추천_탑크리에듀]#4.SQL초보에서 Schema Objectes까지


탑크리에듀 교육센터 교육과정 소개


[SQL기초교육/자바/오라클교육/자바교육/닷넷교육/재직자교육/국비지원학원]#5.SQL초보에서 Schema Objects까지


#6.SQL초보에서 Schema Objects까지_구로IT학원/오라클교육/자바교육/자바/국비지원/재직자환급교육/내일배움카드/사업주위탁


#7.SQL초보에서 Schema Objects까지_IT교육학원/자바/오라클교육/SQL학원/자바학원/재직자환급교육


#8.SQL초보에서 Schema Objects까지(국비지원교육/재직자환급교육/구직자교육/자바/IT실무교육학원추천)


[구로IT학원추천/구로디지털단지IT학원/국비지원IT학원/재직자/자바/구직자환급교육]#9.SQL초보에서 Schema Objects까지


(재직자환급교육/사업주위탁/IT실무교육/구로IT학원/오라클교육/SQL기초강좌/자바/IT강좌)#10.SQL초보에서 Schema Objects까지


[실무교육IT학원/구로IT학원추천/재직자환급교육/국비지원IT학원_탑크리에듀][구로오라클학원][IT 꿀팁] 국비무료교육, 야너도? 야 나도 신청가능!![졸업예정자/실업자]

[실무교육IT학원/구로IT학원추천/재직자환급교육/국비지원IT학원_탑크리에듀][구로오라클학원][IT 꿀팁] 학벌이 낮아도, 토익이 없어도 취업가능 !!! [NCS기반 채용]에 대해 아는척 해보자. "

[실무교육IT학원/구로IT학원추천/재직자환급교육/국비지원IT학원_탑크리에듀][구로 오라클학원] [IT 꿀팁] 빅데이터기반 DB엔지니어링 구직자 양성과정 (평일주간)

[실무교육IT학원/구로IT학원추천/재직자환급교육/국비지원IT학원_탑크리에듀][탑크리에듀_IT 꿀팁] 열정에 미친사람 모여라 [무료강좌 수강생 모집중]

[실무교육IT학원/구로IT학원추천/재직자환급교육/국비지원IT학원_탑크리에듀][구로오라클학원][IT 꿀팁] 연봉 1억 개발자를 꿈꾸는 여러분을 모시고 싶습니다 !!!

[실무교육IT학원/구로IT학원추천/재직자환급교육/국비지원IT학원_탑크리에듀][구로오라클학원][IT 꿀팁] 당신의 성공을 막는 거짓말 13.

[실무교육IT학원/구로IT학원추천/재직자환급교육/국비지원IT학원_탑크리에듀][구로오라클학원][IT꿀팁] 재직자 국비지원 받기 : 내일배움카드에 대해 파해쳐 보자!!

[실무교육IT학원/구로IT학원추천/재직자환급교육/국비지원IT학원_탑크리에듀]탑크리에듀 _구로오라클학원

[실무교육IT학원/구로IT학원추천/재직자환급교육/국비지원IT학원_탑크리에듀]Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스강의 [ 제 1장 ] _ 스프링 프레임 워크 개요

[실무교육IT학원/구로IT학원추천/재직자환급교육/국비지원IT학원_탑크리에듀]오라클 힌트, 튜닝 강좌

[실무교육IT학원/구로IT학원추천/재직자환급교육/국비지원IT학원_탑크리에듀]Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스

[실무교육IT학원/구로IT학원추천/재직자환급교육/국비지원IT학원_탑크리에듀]커서 & 오라클 메모리

[실무교육IT학원/구로IT학원추천/재직자환급교육/국비지원IT학원_탑크리에듀]커서 & 오라클 메모리

[실무교육IT학원/구로IT학원추천/재직자환급교육/국비지원IT학원_탑크리에듀]커서 & 오라클 메모리

[오라클교육/자바학원/닷넷교육/실무IT학원/국비지원IT학원추천_탑크리에듀학원]오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Shared SQL Area, Cursor

탑크리에듀(http://www.topcredu.co.kr)에서 제공하는 오라클, SQL, PL/SQL, 힌트튜닝 강좌중 오라클 커서(Cursor) 개념 & 메모리 구조(Memory Strucre)와 관련된 PPT 강좌 입니다. CURSOR, PGA, UGA, Shared Server, Dedicate Server, DRCP, Library Cache, Shared SQL Area와 관련된 내용 참조하시기 바랍니다.

[오라클교육/자바학원/닷넷교육/실무IT학원/국비지원IT학원추천_탑크리에듀학원](탑크리에듀추천C#,자마린교육강좌)Xamarin.Forms?_크로스플랫폼 앱 개발을 위한 자마린 폼즈 소개합니다.

자마린의 Xamarin.Forms는 크로스플랫폼(Android, iOS, Windows, and Windows Phone)을 편하게 개발하도록 지원하는 프레임워크 이다. 사용자가 작성한 응용프로그램은 자마린을 통해 타겟 플랫폼의 Native Controll로 렌더링되어 실행된다.

[오라클교육/자바학원/닷넷교육/실무IT학원/국비지원IT학원추천_탑크리에듀학원](오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)

탑크리에듀에서 제공하는 SQL기초강좌(상관서브쿼리) 입니다. 서브 쿼리와 메인쿼리간에 서로 상관 참조 작용하는 쿼리로 Inner Query에서 Outer Query의 어떤 컬럼을 이용하는 경우다. 일반적인 Query의 경우 서브 쿼리의 결과를 메인에서는 단순히 이용만 하지만 상관 서브 쿼리에서는 서브 쿼리가 메인 쿼리의 값을 이용하여 값을 구하면 그 값을 다시 메인 쿼리에서 이용하는 구조이므로 서브쿼리는 값을 확인하는 확인자 역할을 하게된다. 예를 들어 서브 쿼리 에서 10번 부서에서 가장 많은 급여를 받는 사람, 20번 부서에서 가장 많은 급여를 받는 사람, 30번 부서에서 같은 결과를 구하고자 한다면 부서만 다르고 같은 내용을 입력 시켜야 하므로 이 경우 상관 쿼리로 만들어 처리하면 편리 하다.

[오라클교육/자바학원/닷넷교육/실무IT학원/국비지원IT학원추천_탑크리에듀학원]PL SQL 단기속성 - 하루 투자로 PL SQL 마스터 하자!!

PL/SQL의 기본개념, 문법부터 Oracle Stored Procedure, Function, Package, Trigger등을 학습하는 과정 입니다. 본 과정은 철저한 실습,실무위주의 교육으로

[오라클교육/자바학원/닷넷교육/실무IT학원/국비지원IT학원추천_탑크리에듀학원]Pentaho를 이용한 ETL 기본과정

사용자의 의사 결정에 도움을 주기 위하여 기간시스템의 데이터베이스에 축적된 데이터와 외부데이터 등을 공통의 형식으로 변환해서 관리하기 위해서는 데이터의 추출, 변환, 저장, 조회 등의 ETL작업이 필요합니다. Kettle이라는 오픈소스를 제품화한 Pentaho사에서 제공하는 ETL툴인 Pentaho Data Integration은 GUI 작업 환경을 제공하는 Spoon, 작성된 작업을 Console에서 실행할 수 있는 Kitchen과 Pan, 원격 및 분산 실행을 위한 서버인 Carte 로 구성되어 있습니다. 작업에 대한 정보를 담은 메타데이터를 파일 또는 데이터베이스에 저장할 수 있고, 작업정보가 저장될 테이블들을 자동으로 생성해주고, 저장소 간의 import, export 기능도 제공하여 프로그래밍 언어에 익숙하지 않은 업무전문가 등과 공동 작업을 원할히 할 수 있습니다. 본과정을 통해 ETL 개념과 제품의 아키텍쳐를 이해하고 ETL개발에 사용되는 기본 객체에 대한 설명과 최종적으로 작업을 실행하고 그 결과를 모니터링할 수 있습니다. 주말주간반을 개설하였습니다. 많은 관심 바랍니다.

[오라클교육/자바학원/닷넷교육/실무IT학원/국비지원IT학원추천_탑크리에듀학원]안드로이드 개발자과정_Android Developer, 안드로이드 앱개발교육, 안드로이드개발학원

안드로이드 앱 개발자를 꿈꾸고 계신가요? 앱을 만들고 싶으신가요? java 프로그래밍을 할 줄 아신다면 도전하세요! 안드로이드 SDK를 활용하여 미니프로젝트를 진행하는 교육과정이 개설되었습니다. 평일 5일, 주말 2주동안 진행되는 과정입니다. 구직자&재직자 분들의 많은 관심 부탁드립니다.

[오라클교육/자바학원/닷넷교육/실무IT학원/국비지원IT학원추천_탑크리에듀학원]개발자,디자이너를 위한 웹퍼블리싱 마스터_ html5, css3, 자바스크립트, 제이쿼리, 웹퍼블리싱교육, 웹퍼블리싱학원

웹퍼블리셔는 웹개발 영역의 한 부분으로 코더 또는 프론트엔드 개발자로 불리기도 합니다. 웹 초창기에는 html 하나의 언어만 알아도 정적이긴하지만 사이트를 운영하는데 큰 어려움이 없었습니다. 그러나 웹이 빠른 발전을 하면서 동적인 부분을 위해 스크립트 언어가 만들어지고 더 쉬운 인터페이스 구현을 위해 css를 따로 분리하면서 더욱 복잡한 형태의 컨텐츠가 생기고 서비스되고 있습니다. html만 알아서는 개발하는데 한계가 생기고 개발자의 영역도 세분화 되기 시작합니다. 보통 클라이언트측과 서버측으로 나뉘게 되는데 프론트엔드 개발자와 백엔드개발자라고 불립니다. 클라이언트측인 웹퍼블리셔가 되기 위해서는 html, css, javascript를 기본적으로 알고나서 다른 프레임워크나 스킬을 접한다면 더욱 쉽게 접근할 수 있습니다. html을 선수학습 하신 후 본 과정에서는 웹표준, 웹접근성, html5, css3, javascript, jQuery 과정으로 진행됩니다. [평일주간][주말주간]시간대로 구성되어 있으니 많은 관심 바랍니다.

[오라클교육/자바학원/닷넷교육/실무IT학원/국비지원IT학원추천_탑크리에듀학원]Ajax, javascript, jquery, AngularJS 실무과정

프론트엔드 개발 분야도 새로운 언어와 라이브러리, 프레임웍은 계속 탄생하고 발전하고 있어서 예전과는 달리 html, css, javascript만 알면 다가 아닙니다. 많은 스킬중에 요즘 제일 많이 쓰이는 스킬만 골라 한 교육과정으로 묶어 개설하였습니다. Ajax, jQuery, AngularJS를 단기간에 한 교육과정으로 학습하실 수 있는 기회 놓치지마세요. 본 교육과정은 [평일주간][평일야간][주말주간] 시간대로 구성되어 있습니다.

[오라클교육/자바학원/닷넷교육/실무IT학원/국비지원IT학원추천_탑크리에듀학원]JPA,쇼핑몰 프로젝트 실무과정

Spring Boot, JPA를 기반으로 미니 쇼핑몰을 구현하는 실습위주의 교육과정입니다. 쇼핑몰을 만드는 과정에서 JPA의 기본개념을 확립하고 Spring Data JPA까지 이해하는데 도움이 되셨으면 합니다. 개발자 분들의 스킬업을 위하여 만들어진 과정입니다. 많은 관심 바랍니다. 개강시간 : [평일주간][평일야간][주말주간]

[오라클교육/자바학원/닷넷교육/실무IT학원/국비지원IT학원추천_탑크리에듀학원]spring boot, jpa,querydsl 실무프로젝트과정

Spring Boot, ORM 및 JPA, Spring Data JPA, QueryDSL, JPA 실무프로젝트, 스프링시큐리티까지 이 모든 과정을 3일만에 필요한 스킬만 쏙쏙 알려드립니다. 스프링 부트부터 JPA 실무 프로젝트까지 진행하는 실무/실습 위주의 교육으로 평일주간, 평일야간, 주말주간, 주말야간 시간대로 개강하였으니 원하는 시간대에 수강하시고 스킬업 하세요!!

2017년 3월 30일 목요일

[탑크리에듀학원_국비지원IT학원/재직자환급교육/구로IT학원/실무교육/자바/오라클/닷넷]DBMS_STATS 패키지 사용하기 (국비지원교육, 오라클교육, 오라클국비지원학원, 추천오라클교육, 추천오라클학원, SQL학원, SQL교육 국비지원, 고용노동부, 환급과정)

[탑크리에듀학원_국비지원IT학원/재직자환급교육/구로IT학원/실무교육/자바/오라클/닷넷]스프링프레임워크 & 마이바티스 ☆무.료 강의자료 제공★ /구로자바학원/ 구로오라클학원/ 구로IT학원/ 실무중심/ 탑크리에듀 교육센터

[탑크리에듀학원_국비지원IT학원/재직자환급교육/구로IT학원/실무교육/자바/오라클/닷넷]1.4 Optimizer Statistics(국비지원교육, 오라클교육, 오라클국비지원학원, 추천오라클교육, 추천오라클학원, SQL학원, SQL교육 등 국비지원, 고용노동부)

[탑크리에듀학원_국비지원IT학원/재직자환급교육/구로IT학원/실무교육/자바/오라클/닷넷]1.5 Literal SQL & Bind Variable SQL(국비지원교육, 오라클교육, 오라클국비지원학원)

[탑크리에듀학원_국비지원IT학원/재직자환급교육/구로IT학원/실무교육/자바/오라클/닷넷]스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원

[탑크리에듀학원_국비지원IT학원/재직자환급교육/구로IT학원/실무교육/자바/오라클/닷넷]스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원

[탑크리에듀학원_국비지원IT학원/재직자환급교육/구로IT학원/실무교육/자바/오라클/닷넷]1.6 CURSOR_SHARING 파라미터(국비지원교육, 오라클교육, 오라클국비지원학원, 추천오라클교육, 추천오라클학원, SQL학원, SQL교육 국비지원,)

[탑크리에듀학원_국비지원IT학원/재직자환급교육/구로IT학원/실무교육/자바/오라클/닷넷]Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스/ 구로오라클학원/ 구로자바학원/ 자바학원/ 오라클학원/ 구로디지털단지/ 무료강좌

[탑크리에듀학원_국비지원IT학원/재직자환급교육/구로IT학원/실무교육/자바/오라클/닷넷]1.7 튜닝의 도구 - SQL AUTOTRACE(오라클교육, 오라클국비지원학원, 추천오라클교육)

[탑크리에듀학원_국비지원IT학원/재직자환급교육/구로IT학원/실무교육/자바/오라클/닷넷]1.8 튜닝의 도구 – DBMS_XPLAN(국비지원교육, 오라클교육, 오라클국비지원학원, 추천오라클교육)

[탑크리에듀학원_국비지원IT학원/재직자환급교육/구로IT학원/실무교육/자바/오라클/닷넷]스프링프레임워크 & 마이바티스 무료 강의 파일

[탑크리에듀학원_국비지원IT학원/재직자환급교육/구로IT학원/실무교육/자바/오라클/닷넷]1.9 튜닝의 도구 – 10053 Event, 1.10 실행계획 해석 (국비지원교육, 오라클교육, 오라클국비지원학원, 추천오라클교육

[탑크리에듀교육센터_국비지원IT학원/구로IT학원/실무IT교육/자바/닷넷교육추천]왕초보를 위한 최신 코딩 강의(파이썬으로 C, JAVA, 딥러닝, 빅데이터 기초를 다지세요)

2018년 부터 소프트웨어 코딩교육이 초,중,고교 정규과목으로 지정된다고 합니다. 산업의 빠른 발전으로 현재 전 직업군에서 컴퓨터의 사용이 필수인 만큼 머지않아 코딩은 프로그래머뿐만 아니라 많은 사람들이 필요하게 될 것입니다. 탑크리에듀에서는 누구나 쉽게 접근하고 배울 수 있는 파이썬 강의를 개설하였습니다. 초보자도 쉽게 따라하고 이해할 수 있도록 제대로 된 강의 툴을 만들고 강의 내용 역시 기존의 교육들과는 다르게 새롭게 준비했습니다. 새로운 시대, 왕초보를 위한 유일하고도 확실한 강의입니다. 많은 관심 바랍니다.

[탑크리에듀교육센터_국비지원IT학원/구로IT학원/실무IT교육/자바/닷넷교육추천]C#,자마린실습(Hello 안드로이드,이뮬레이터와 휴대폰에서 직접실행)_닷넷기초/C#기초/자마린,Xamarin 앱개발강좌

크로스플랫폼 개발을 위한 자마린(Xamarin)을 이용하여 C#코드로 작성된 예제입니다. xamarin.com의 phoneworld Hello 안드로이드 프로젝트를 따라해 본 예문으로 처음 시작하시는 분들에게 도움이 될것 입니다. (문자로 입력된 전화번호를 숫자로 변환하고 실제 전화를 거는 응용 앱) https://developer.xamarin.com/guides/android/getting_started/hello,android/hello,android_quickstart/ 설치환경 : 윈도우 10 64Bit 8G RAM, 비주얼 스튜디오 커뮤니티 2015, 실습코드는 http://ojc.asia에서 다운로드 가능 합니다.

[탑크리에듀교육센터_국비지원IT학원/구로IT학원/실무IT교육/자바/닷넷교육추천](닷넷,크로스플랫폼 앱개발)자마린설치(Xamarin setup)_C#,닷넷 앱개발을 위한 필수도구 자마린의 설치에 관한 자료 입니다.

닷넷, C#, 자마린(Xamarin)은 크로스플랫폼(Mac, ios, android, windows 등 다양한 OS를 하나의 소프트웨어가 지원하도록하는 기술)을 지원하는 기술로 C#으로 안드로이드 앱과 iOS 앱, 윈도우폰용 앱을 만들 수 있게 지원하는 솔루션 입니다. 본 PPT를 통해 간단히 설치해 보시고 테스트 해보세요

[탑크리에듀교육센터_국비지원IT학원/구로IT학원/실무IT교육/자바/닷넷교육추천](SQL튜닝을위한 오라클힌트강좌)옵티마이저 Query Transformation, OR확장이란? Or expansion, use_concat, no_expand_오라클/SQL튜닝 실무강좌

OR 확장(Expansion)은 WHERE절에 OR 가 있는 사용자가 작성한 SQL을 UNION ALL 연산자를 이용한 SQL 또는 Concatenation연산으로 각각 처리하는 형태로 변환해 주는 것을 이야기 한다. 물론 항상 그렇게 하는 것은 아니며 비용(COST)이 더 좋을 때만 OR-확장을 하게된다. Cartesian products을 피하기 위해 옵티마이저는 효율적인 Access Path, 조인방법을 강구하는데 OR-확장도 그런 이유에서 사용한다.

[탑크리에듀교육센터_국비지원IT학원/구로IT학원/실무IT교육/자바/닷넷교육추천][SQL튜닝강좌추천]오라클 Query Transformation,뷰조인조건푸시,Join predicate pushdown, Push_PRED, NO_PUSH_PRED NO_QUERY_TRANSFORMATION 오라클힌트_오라클/SQL튜닝실무강좌

Join Predicate Pushdown은 뷰가 인덱스 기반의 중첩루프 조인에서 사용되어 다른 테이블이나 쿼리블럭과 조인되는 경우 조인조건을 뷰안으로 밀어 넣는 것을 이야기 합니다. 조인을 수행중 드라이빙 테이블에서 읽은 값을 뷰안에 조건으로 밀어 넣는 것으로 조인 조건 컬럼을 뷰안으로 병합하라는 힌트 입니다. Join Predicate Pushdown은 대체로 성능을 개선시키지만 일부 복잡한 쿼리문에서는 그렇지 못하는 경우가 있어 힌트 또는 오라클 내부 히든 파라미터인 “_push_join_predicate” 값을 제어함으로서 조절이 가능하죠, 간단하게 살펴보세요. (http://www.topcredu.co.kr)

[탑크리에듀교육센터_국비지원IT학원/구로IT학원/실무IT교육/자바/닷넷교육추천]SQL튜닝,오라클힌트교육(조건절 푸싱,Predidate pushing)_오라클/SQL/SQL튜닝/힌트 실무교육학원

본 강좌는 SQL튜닝시 쿼리 변환(Query Transformation)에 관한 내용으로 오라클 옵티마이저는 서브쿼리등을 최적화 할때 기본적으로 뷰 머징을 시도하며 실패할 경우 Predicate Pushing을 시도하는데, 조건절 푸싱(Predicate Pushing)에 대해 설명한 강좌 입니다.

[탑크리에듀교육센터_국비지원IT학원/구로IT학원/실무IT교육/자바/닷넷교육추천]SQL튜닝을 위해 서브쿼리의 드라이빙을 제어하는 push_subq, no_push_subq 힌트, 서브쿼리튜닝,서브쿼리푸시. 서브쿼리의 실행방법에 따른 종류(Filter SubQuery, Early Filter SubQuery, Access SubQuery)

(개발시 SQL튜닝은 기본 입니다.)서브쿼리튜닝, 쿼리 변환(Query Transformation)에 대한 이해는 SQL튜닝의 핵심입니다. 서브쿼리 푸시 및 서브쿼리의 드라이빙을 제어할 수 있는 push_subq, no_push_subq 힌트에 대해 알아보고 실행방법에 따른 서브쿼리의 종류도 설명한 영상 입니다. SQL튜닝 교육은 탑크리에듀(www.topcredu.co.kr)에서 해결해 드리겠습니다.

[탑크리에듀교육센터_국비지원IT학원/구로IT학원/실무IT교육/자바/닷넷교육추천]Angularjs,react 실무과정_앵귤러JS,퍼블리싱,자바스크립트라이브러리,jQuery교육학원

구글에서 개발된 자바스크립트 기반 프레임워크 AngularJS 와 페이스북, 인스타그램에서 만든 라이브러리 React를 동시에 배울 수 있는 과정이 개설 되었습니다. 재직자를 위한 평일야간, 주말주간 시간대도 개강하였으니 프론트엔드 개발자 분들의 많은 관심 바랍니다.

[탑크리에듀교육센터_국비지원IT학원/구로IT학원/실무IT교육/자바/닷넷교육추천](추천SQL교육, View Merging)오라클힌트 for SQL 튜닝, 단순뷰, 복합뷰의 뷰 머지(view merge), Query Transformation Hint (merge, no_merge)

탑크리에듀(www.topcredu.co.kr) 제공 SQL튜닝을 위한 힌트강좌. 쿼리문을 블럭화 하기 위해 서브쿼리, 인라인 뷰등을 자주 사용하는데 오라클 옵티마이저가 인라인뷰, 서브쿼리를 해석할 때 독자적으로 실행하지 않고 메인쿼리와 함께 실행되는 경우, 즉 쿼리블럭을 풀어서 기존 쿼리와 함께 최적화를 수행하는 것을 뷰 머징(View Merging)이라고 합니다. 인라인뷰나 서브쿼리등이 많아 지면 옵티마이저가 뷰 머징을 해서 쿼리 성능이 안좋아질 수가 있는데 서브쿼리, 인라인 뷰등에서 ROWNUM을 사용하면 뷰 머징을 방지하는 효과가 있습니다. 본 강좌는뷰 머징을 위한 merge, no_merge 힌트도 소개 합니다. 감사합니다.

[탑크리에듀교육센터_국비지원IT학원/구로IT학원/실무IT교육/자바/닷넷교육추천]SQL기초강좌(외부조인, outer join), 오라클, MySQL, 내부조인,외부조인,

일반적인 조인(내부조인)은 두 테이블 모두 조인 조건을 만족시키는 레코드만 출력된다. 즉 두 테이블중 한쪽 테이블의 값이 일치하지 않는 다면 해당 레코드는 출력되지 않는데 이 경우에도 결과로 출력해야 되는 경우가 있다면 외부조인(Outer Join)을 사용하면 된다. 외부조인은 LEFT OUTER JOIN, RIGTH OUTER JOIN, FULL OUTER JOIN이 있다.

2017년 3월 29일 수요일

[국비지원IT학원/재직자환급교육/구로IT학원추천_탑크리에듀]Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆ 무.료 강의자료 제공 中 ★

[국비지원IT학원/재직자환급교육/구로IT학원추천_탑크리에듀]1.11 실행계획 해석(predicate)(국비지원교육, 오라클교육, 오라클국비지원학원, 추천오라클교육, 추천오라클학원, SQL학원, SQL교육 국비지원)

[국비지원IT학원/재직자환급교육/구로IT학원추천_탑크리에듀]1.12 초기화 파라미터 OPTIMIZER_MODE(국비지원교육, 오라클교육, 오라클국비지원학원, 추천오라클교육, 추천오라클학원, SQL학원, SQL교육 국비지원)

[국비지원IT학원/재직자환급교육/구로IT학원추천_탑크리에듀]“2018년도 초등코딩교육 의무화로 생긴 당장 필요한 인력, 스크래치 아는 사람”

[국비지원IT학원/재직자환급교육/구로IT학원추천_탑크리에듀]스프링프레임워크 & 마이바티스 ☆ 무.료 강의자료 제공_탑크리에듀 교육센터

[국비지원IT학원/재직자환급교육/구로IT학원추천_탑크리에듀]1.14 규칙 기반 옵티마이저(Rule-Based Optimizer)(국비지원교육, 오라클교육, 오라클국비지원학원, 추천오라클교육, 추천오라클학원)

[국비지원IT학원/재직자환급교육/구로IT학원추천_탑크리에듀]1.13 Optimizer Mode Setting 방법(국비지원교육, 오라클교육, 오라클국비지원학원, 추천오라클교육, 추천오라클학원)

[국비지원IT학원/재직자환급교육/구로IT학원추천_탑크리에듀]1.15 비용기반 옵티마이저(Cost-Based Optimizer)(국비지원교육, 오라클교육, 오라클국비지원학원, 추천오라클교육, 추천오라클학원)

[국비지원IT학원/재직자환급교육/구로IT학원추천_탑크리에듀]스프링 마이바티스 무료강의 / 챕터5. 스프링 트랜잭션(Spring Transaction)

[국비지원IT학원/재직자환급교육/구로IT학원추천_탑크리에듀]2.1 Optimizer Mode를 변경하는 힌트 (RULE)(국비지원교육, 오라클교육, 오라클국비지원학원, 추천오라클교육, 추천오라클학원)

[국비지원IT학원/재직자환급교육/구로IT학원추천_탑크리에듀]2.2 Optimizer Mode를 변경하는 힌트(FIRST_ROWS)(국비지원교육, 오라클교육, 오라클국비지원학원, 추천오라클교육, 추천오라클학원)

[국비지원IT학원/재직자환급교육/구로IT학원추천_탑크리에듀][ 제 5장 ] _ 스프링 트랜잭션(SpringTransaction)_탑크리에듀 교육센터/구로자바학원/구로오라클학원

2017년 3월 28일 화요일

[자바교육/스프링교육/닷넷교육/재직자환급교육학원추천_탑크리에듀](오라클 인덱스 스캐닝 관련 힌트)오라클11g_invisible 인덱스 및 use_invisible_indexes,no_use_invisible_indexes 힌트,오라클힌트교육/SQL튜닝강좌,추천SQL/오라클/자바/스프링/JPA/닷넷/빅데이터/안드로이드/아이폰교육학원

Oracle11g R1 부터 Optimizer에게 보이지 않는 invisible index의 생성을 가능하도록 했는데 인덱스는 Index Segment에 동일하게 생성되지만 단지 보이지는 않습니다. 실무에서 인덱스 변경을 통해 SQL성능을 평가하는 경우가 많이 있으므로 실제 인덱스를 반영하기 전에 그 인덱스가 사용되었을 때의 성능을 측정하기 위해 사용하며 관련된 힌트로는 use_invisible_indexes,no_use_invisible_indexes 힌트가 있는데 본 강좌를 통해 간단히 살펴보세요~

[자바교육/스프링교육/닷넷교육/재직자환급교육학원추천_탑크리에듀](닷넷C#기초교육강좌)C#선택적인수, 명명된 인수(메소드, 생성자, 델리게이트, 인덱서)_닷넷추천교육,추천C#,자마린,Xamarin학원

C#에서 명명된 인수란? 매개 변수 목록에서의 매개 변수 위치지정 대신 매개 변수의 이름과 인수를 연결하여 특정 매개 변수에 대한 인수를 지정할 수 있으므로 매개 변수의 순서를 기억하거나 확인할 필요가 없는 방법을 제공하며 메소드에서 파라미터 값을 넘길 때 매개변수 이름을 정해서 넘기는 것을 이야기 합니다. 선택적 인수란? 메서드, 생성자, 인덱서 또는 대리자의 정의에서 해당 매개 변수가 필수인지 선택적인지 지정할 수 있는데 호출할 경우 모든 필수 매개 변수에 대한 인수는 항상 제공해야 하지만 선택적 매개 변수에 대한 인수는 생략할 수 있으며 각 선택적 매개 변수에는 기본값이 있어서 해당 매개 변수에 대해 인수를 전달하지 않으면 기본값이 사용됩니다.

[자바교육/스프링교육/닷넷교육/재직자환급교육학원추천_탑크리에듀](해시조인시 드라이빙, Build Input 스와핑과 관련된 힌트,드라이빙 테이블선정)swap_join_inputs, no_swap_join_inputs_자바/오라클/닷넷/자바린/아이폰/안드로이드/실무고급교육전문

해시외부조인(hash outer-join), 해시 세미조인(hash semi-join), 해시 안티조인(hash anti-join) 시 드라이빙(driving table, build input), 비드라이빙(probe input)을 바꿀수 있도록 하는 힌트, 즉 드라이빙 테이블선정과 관련된 swap_join_inputs, no_swap_join_inputs 힌트에 대한 설명 및 실습 강좌입니다.

[자바교육/스프링교육/닷넷교육/재직자환급교육학원추천_탑크리에듀](추천오라클힌트교육)해시조인, Hash join, use_hash, ordered

(해시조인과 관련된 오라클힌트)해시조인은 두테이블 중 작은 테이블(Build Input, Driving Table)을 메모리에 조인키를 기반으로 해시테이블을 생성하고 해시테이블내에 행들을 위치시키기 위해 해시함수를 이용하며 나머지 테이블을 스캔하면서 메모리에 있는 해시테이블과 조인 조건을 만족하는 데이터를 찾는 조인이다. 중첩루프조인과 같이 조인시 발생하는 랜덤액세스에 대한 부하가 없는 조인방식이다. 관계형 데이터베이스에서 가장 비용이 많이 들어가는 조인방법으로 주로 작은 테이블과 큰 테이블의 조인 시 사용되며 , 드라이빙 조건과 상관없이 좋은 성능을 발휘할 수 있는 조인 방법이며 대체로 제일 빠르다.

[자바교육/스프링교육/닷넷교육/재직자환급교육학원추천_탑크리에듀]오라클힌트(USE_NL, ORDERED), 중첩루프조인및 조인순서와 관련된 힌트

USE_NL 힌트는 테이블을 조인 하는 경우 중첩 루프 조인(Nested Loop Join)이 일어나도록 하는 힌트 문장이다. 중첩 루프 조인은 중첩반복 이라고도 하는데 하나의 테이블(outer/driving table)에서 추출된 ROW를 가지고 일일이 다른 테이블(inner/probed table)을 반복해서 조회하여 찾아지는 레코드를 최종 데이터로 간주하는 방법 이다. ORDERED 힌트는 FROM 뒤에 기술되는 테이블의 순서대로 조인이 일어나도록 해주는 구문으로 대부분 단독으로는 사용되지 않고 USE_NL(중첩 루프 조인을 유도), USE_MERGE(머지 소트 조인을 유도), USE_HASH(HASH 조인을 유도)등과 같이 사용된다.

[자바교육/스프링교육/닷넷교육/재직자환급교육학원추천_탑크리에듀]JPA 상속관계 매핑(@MappedSuperclass, @Inheritance,@DiscriminatorValue,@DiscriminatorC

JPA에서 상속관계 매핑 방법에 대해 설명한 자료입니다. RDB는 객체지향처럼 상속이 존재하지 않으며 대신 Super Type, Sub Type 이라는 개념이 존재한다. 슈퍼/서브 타입 논리모델을 물리적인 테이블로 변환할 때는 하나의 통합된 테이블로 표시(단일 테이블 전략)하거나, 각각 테이블로 별도로 두어 조회할 때 조인을 이용하거나 서브타입만 테이블로 변환을 하는 방법이 있다.

[자바교육/스프링교육/닷넷교육/재직자환급교육학원추천_탑크리에듀][오라클SQL기초강좌]스칼라서브쿼리(Scalar Subquery)

오라클 SQL초보자를 위한 스칼라 서브쿼리에 대한 간단한 설명자료 입니다. 데이터 건수가 많지 않다면 조인보다 가끔 스칼라 서브쿼리가 더 효율적일 때가 있죠. 참조하세요.

[자바교육/스프링교육/닷넷교육/재직자환급교육학원추천_탑크리에듀]스프링컨트롤러예외처리,@ExceptionHandler, @ControllerAdvice

스프링 WEB MVC에서 컨트롤러에서 예외처리하는 방법에 관해 설명한 PPT 입니다. @ExceptionHandler는 스프링 컨트롤러에서 정의한 메소드에서 기술한 예외가 발생되면 자동으로 받아낼 수 있는데 이를 이용하여 컨트롤러에서 발생하는 예외를 View단 JSP등으로 보내서 처리할 수 있으며@ControllerAdvice는 스프링3.2 이상에서 사용가능하며 @Controller 나 스프링 4.0이상에서 지원하는 @RestController 에서 발생하는 예외 등을 catch하는 기능을 가지고 있으며 클래스 위에 @ControllerAdvice를 붙이고 어떤 예외를 잡아낼 것인지 메소드 상단에 @ExceptionHandler(예외클래스명.class)를 기술합니다. 스프링4.0이상에서는 특정한 컨트롤러만 지정해서 캐치할 수 있죠

[자바교육/스프링교육/닷넷교육/재직자환급교육학원추천_탑크리에듀](스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)

스프링 프레임워크는 빈을 다루는 기술인데, 스프링 컨테이너는 base-package의 클래스를 검색해서 자동으로 자바 빈으로 등록하는 데 이에 해당하는 것이 @Component, @Repository, @Service, @Contoroller, @RestController 어노테이션인데 그와 관련하여 PPT로 간단히 소개 합니다.

[자바교육/스프링교육/닷넷교육/재직자환급교육학원추천_탑크리에듀](스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션

스프링 프레임워크 기반 개발에서 가장 자주 사용되는 컨텍스트 설정과 관련된 어노테이션 @Scope, @Autowired, @Resource, @Inject, @Required, @Named, @Order, @PostConstruct, @PreDestroy와 관련된 간단한 설명 입니다.

[자바교육/스프링교육/닷넷교육/재직자환급교육학원추천_탑크리에듀](SQL초보자를 위한, 쿼리최적화 for SQL튜닝)SQL쿼리작성Tip,최적화팁,최적화된SQL작성방법교육

(오라클 SQL튜닝을 위한 쿼리문 작성법 강좌)오라클 SQL/쿼리 튜닝은 간단한 SQL구문 최적화 부터 시작을 하게되죠, SQL을 처음 사용할 때 부터 최적화 하는 방법에 주의해서 공부하시면 저절로 튜닝 됩니다. 본 PPT 강좌는 탑크리에듀(www.topcredu.co.kr), 오라클자바커뮤니티(ojc.asia)에서 제공하는 교육강좌 입니다.

[자바교육/스프링교육/닷넷교육/재직자환급교육학원추천_탑크리에듀]자바모델 클래스에 날개를달자_롬복(Lombok)

자바개발시 모델객체를 생성할 때 setter/getter/toString/hashCode/equals 메소드를 만드는데 이럴 경우 클래스 파일의 소스가 길어지고 복잡해지는데, 이를 해결하기 위해 롬복(Lombok)을 사용하죠, 자바개발 하시는 분이라면 알아두시면 유용하리라 생각 됩니다.

(재직자환급교육/사업주위탁/IT실무교육/구로IT학원/오라클교육/자바강의/ SQL기초강좌/IT강좌)#10.SQL초보에서 Schema Objects까지

(재직자환급교육/사업주위탁/IT실무교육/구로IT학원/오라클교육/자바강의/ SQL기초강좌/IT강좌)#10.SQL초보에서 Schema Objects까지

[ 너의 꿈에 미쳐라 !! ] _ 오라클 학원/자바 학원/구로 학원/ 자바강의/ 탑크리에듀 교육센터

[ 너의 꿈에 미쳐라 !! ] _ 오라클 학원/자바 학원/구로 학원/ 자바강의/ 탑크리에듀 교육센터

[ 당신의 성공을 막는 거짓말 13 ]_ 오라클학원/ 자바강의/ 자바학원/ 구로학원/ IT학원/ 탑크리에듀교육센터

[ 당신의 성공을 막는 거짓말 13 ]_ 오라클학원/ 자바강의/ 자바학원/ 구로학원/ IT학원/ 탑크리에듀교육센터

직장인을 위한 스펙업제도 [재직자 내일배움카드] _오라클학원/ 자바학원/ 자바강의/ 구로학원/ IT학원/ 탑크리에듀교육센터

직장인을 위한 스펙업제도 [재직자 내일배움카드] _오라클학원/ 자바학원/ 자바강의/ 구로학원/ IT학원/ 탑크리에듀교육센터

대한, 추위가 가시고 있어요!

대한, 추위가 가시고 있어요!




IT 무료 교육 : SW 개발자 과정_ 오라클학원/ 자바학원/ 구로학원/ 자바강의/ IT학원/ 탑크릴에듀교육센터

IT 무료 교육 : SW 개발자 과정_ 오라클학원/ 자바학원/ 구로학원/ 자바강의/ IT학원/ 탑크릴에듀교육센터

IT실무교육학원/자바학원/자바강의/오라클학원/SQL기초학원추천_#11.SQL초보에서 Schema Objects까지

IT실무교육학원/자바학원/자바강의/오라클학원/SQL기초학원추천_#11.SQL초보에서 Schema Objects까지

#12.SQL초보에서 schema Objects까지(구로IT학원/IT실무교육학원/국비지원IT교육학원/오라클교육/자바교육/자바강의/닷넷교육학원추천)

#12.SQL초보에서 schema Objects까지(구로IT학원/IT실무교육학원/국비지원IT교육학원/오라클교육/자바교육/자바강의/닷넷교육학원추천)

오라클강의/자바강의/닷넷강의/자바강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지

오라클강의/자바강의/닷넷강의/자바강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지



#14.SQL초보에서 Schema Objects까지_SQL강좌/자바강좌/오라클강좌/SchemaObjects강좌/닷넷학원/아두이노학원추천

#14.SQL초보에서 Schema Objects까지_SQL강좌/자바강좌/오라클강좌/SchemaObjects강좌/닷넷학원/아두이노학원추천

(JPA 엔티티 매니저)JPA 기초강좌, 엔티티 매니저. 엔티티 매니저팩토리 (자바강의)

(JPA 엔티티 매니저)JPA 기초강좌, 엔티티 매니저. 엔티티 매니저팩토리 (자바강의)

Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스강의_제1장 스프링프레임워크 개요

Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스강의_제1장 스프링프레임워크 개요

#15.SQL초보에서 Schema Objects까지_국비지원IT학원/구로IT학원/자바강의/실무교육학원/SQL교육/오라클교육

 #15.SQL초보에서 Schema Objects까지_국비지원IT학원/구로IT학원/자바강의/실무교육학원/SQL교육/오라클교육

[오라클교육/닷넷교육/자바교육/SQL기초/스프링학원/국비지원학원/자바강의/자마린교육]#16.SQL초보에서 Schema Objects까지

[오라클교육/닷넷교육/자바교육/SQL기초/스프링학원/국비지원학원/자바강의/자마린교육]#16.SQL초보에서 Schema Objects까지

오라클 힌트, 튜닝 강좌 - (국비지원교육, 오라클교육, 오라클국비지원학원, 추천오라클교육, 추천오라클학원, SQL학원, SQL교육 국비지원, 고용노동부, 환급과정, 자바강의.,IT학원, 교육, 강좌, 추천강좌, 자바교육, 자바 학원)

오라클 힌트, 튜닝 강좌 - (국비지원교육, 오라클교육, 오라클국비지원학원, 추천오라클교육, 추천오라클학원, SQL학원, SQL교육 국비지원, 고용노동부, 환급과정, 자바강의.,IT학원, 교육, 강좌, 추천강좌, 자바교육, 자바 학원)

#17.SQL초보에서 Schema Objects까지_오라클교육/SQL기초교육/구로IT학원/탑크리에듀/구로디짙털단지역

#17.SQL초보에서 Schema Objects까지_오라클교육/SQL기초교육/구로IT학원/탑크리에듀/구로디짙털단지역

#18.SQL초보에서 Schema Objects까지_오라클학원/자바학원/닷넷학원/아두이노학원/구로IT학원/자바강의/국비지원IT학원추천

#18.SQL초보에서 Schema Objects까지_오라클학원/자바학원/닷넷학원/아두이노학원/구로IT학원/자바강의/국비지원IT학원추천

NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에듀, IT학원, 자바강의, 국비지원교육, 재직자환급교육

NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에듀, IT학원, 자바강의, 국비지원교육, 재직자환급교육

2017년 3월 27일 월요일

[자바교육/닷넷교육/구로IT학원추천/국비지원/재직자환급교육학원_탑크리에듀교육센터]오라클 비트맵 조인 인덱스(Bitmap Join Index) 소개합니다.

ORACEL Database의 비트맵 조인 인덱스(BITMAP JOIN INDEX)란? 두 테이블 조인시 조인한 결과 칼럼에 대해 비트맵 인덱스를 생성하는 것이죠, PPT 슬라이드 참조하세요~ (탑크리에듀, www.topcredu.co.kr 제공)

[자바교육/닷넷교육/구로IT학원추천/국비지원/재직자환급교육학원_탑크리에듀교육센터](초보자 C#닷넷,자마린교육)C#기초, xamarin 앱 개발과정 소개합니다._(평일/주말)탑크리에듀

탑크리에듀(www.topcredu.co.kr)에서 제공하는 닷넷, 자마린교육으로 C#의 기본문법, 객체지향, C# 고급 프로그래밍, 링크(Linq)등을 학습 후 자마린 앱 개발방법에 대해 학습하는 과정 입니다. 자마린의 새로운 세상에 도전해 보세요~

[자바교육/닷넷교육/구로IT학원추천/국비지원/재직자환급교육학원_탑크리에듀교육센터](초보자를위한)C#, 윈폼, ADO.NET. NETWORK 프로그래밍

(초보자를위한) c#,ado.net,network프로그래밍에서는 닷넷 프레임워크에 대한 이해 , C#의 기본 문법과 구조, C#을 이용한 객체 지향 프로그래밍 , C# 고급프로그래밍 - C# Linq, ADO.NET, 윈폼 Application 개발, C# 네트워크 프로그래밍까지 윈도우 응용프로그램을 개발하기 위한 필수요소에 대해 학습합니다.

[자바교육/닷넷교육/구로IT학원추천/국비지원/재직자환급교육학원_탑크리에듀교육센터]스프링에서 자바빈 로딩방법(Pre-Loading, Lazy-Loading)

스프링은 자바빈을 다루는 기술이죠, 빈이 어떻게 로딩되는지는 기본적으로 알고 계시면 좋을 듯 합니다

[자바교육/닷넷교육/구로IT학원추천/국비지원/재직자환급교육학원_탑크리에듀교육센터]JPA, JSON 양방향 @OneToMany, @ManyToOne에서 Stack Overflow, Infinite Recursion 오류 해결방법_스프링/시큐리티/소셜/JPA

JPA, JSON 양방향 @OneToMany, @ManyToOne에서 Stack Overflow, Infinite Recursion 오류 해결방법, Jackson 1.6+ 에서 @JsonManagedReference, @JsonBackReference를, Jackson 2.0+ 에서 @JsonIdentityInfo를 사용하면 된다.

[자바교육/닷넷교육/구로IT학원추천/국비지원/재직자환급교육학원_탑크리에듀교육센터]스프링 프레임워크에서 자바빈 로딩방법_Pre-Loading, Lazy-Loading

스프링은 자바빈을 다루는 것이죠, 빈이 어떻게 로딩되는지 알아두시면 좋을 듯 합니다. 스프링프레임워크 실무/스프링소셜/스프링시큐리티/JPA 실무강좌

[자바교육/닷넷교육/구로IT학원추천/국비지원/재직자환급교육학원_탑크리에듀교육센터]Jackson annotation, JSON 직렬화,역직렬화와 관련된 어노테이션_자바/스프링/시큐리티/소셜/JPA 실무전문교육

@RestController에서 엔티티 매핑시 자주 사용되는 JSON과 관련된 어노테이션에 대해 간단히 정리해 보았습니다. @JsonProperty , @JsonIgnore, @JsonAnyGetter, @JsonAnySetter, @JsonAnyGetter, @JsonGetter, @JsonSetter, @JsonAutoDetect, @JsonInclude, @JsonUnwrapped

[자바교육/닷넷교육/구로IT학원추천/국비지원/재직자환급교육학원_탑크리에듀교육센터][실무특화자바교육]자바기초에서 서블릿, JSP, 스프링, MyBatis까지 과정 소개서

단기간에 자바개발자로 거듭날 수 있는 자바기초에서 서블릿, JSP, 스프링, MyBatis까지 과정을 소개 합니다.

[탑크리에듀,국비지원과정,C#강좌] C#에서 출력하는 예제(PreView 기능+ 출력)

MS 예제 입니다. 실행 결과는 아래와 같습니다. Print1.jpg ---------------------- frmMain.cs ---------------------- //Copyright (C) 2002 Microsoft Corporation //All rights reserved. //THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER //EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF //MERCHANTIBILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. //Requires the Trial or Release version of Visual Studio .NET Professional (or greater). using System.Drawing.Printing; using System; using System.Windows.Forms; using System.Drawing; public class frmMain: System.Windows.Forms.Form { // It's important that all the event procedures work with the same PrintDocument // object. private PrintDocument pdoc = new PrintDocument(); /// /// The main entry point for the application. /// [STAThread] static void Main() { Application.Run(new frmMain()); } #region " Windows Form Designer generated code " public frmMain() { //This call is required by the Windows Form Designer. InitializeComponent(); //Add any initialization after the InitializeComponent() call // So that we only need to set the title of the application once, // we use the AssemblyInfo class (defined in the AssemblyInfo.cs file) // to read the AssemblyTitle attribute. AssemblyInfo ainfo = new AssemblyInfo(); this.Text = ainfo.Title; this.mnuAbout.Text = string.Format("&About {0} ...", ainfo.Title); } //Form overrides dispose to clean up the component list. protected override void Dispose(bool disposing) { if (disposing) { if (components != null) { components.Dispose(); } } base.Dispose(disposing); } //Required by the Windows Form Designer private System.ComponentModel.IContainer components = null; //NOTE: The following procedure is required by the Windows Form Designer //It can be modified using the Windows Form Designer. //Do ! modify it using the code editor. private System.Windows.Forms.MainMenu mnuMain; private System.Windows.Forms.MenuItem mnuFile; private System.Windows.Forms.MenuItem mnuExit; private System.Windows.Forms.MenuItem mnuHelp; private System.Windows.Forms.MenuItem mnuAbout; private System.Windows.Forms.Button btnPageSetup; private System.Windows.Forms.Button btnPrintDialog; private System.Windows.Forms.Button btnPrintPreview; private System.Windows.Forms.OpenFileDialog odlgDocument; private System.Windows.Forms.TextBox txtDocument; private void InitializeComponent() { System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(frmMain)); this.mnuMain = new System.Windows.Forms.MainMenu(); this.mnuFile = new System.Windows.Forms.MenuItem(); this.mnuExit = new System.Windows.Forms.MenuItem(); this.mnuHelp = new System.Windows.Forms.MenuItem(); this.mnuAbout = new System.Windows.Forms.MenuItem(); this.btnPageSetup = new System.Windows.Forms.Button(); this.btnPrintDialog = new System.Windows.Forms.Button(); this.btnPrintPreview = new System.Windows.Forms.Button(); this.odlgDocument = new System.Windows.Forms.OpenFileDialog(); this.txtDocument = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // //mnuMain // this.mnuMain.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {this.mnuFile, this.mnuHelp}); this.mnuMain.RightToLeft = (System.Windows.Forms.RightToLeft) resources.GetObject("mnuMain.RightToLeft"); // //mnuFile // this.mnuFile.Enabled = (bool) resources.GetObject("mnuFile.Enabled"); this.mnuFile.Index = 0; this.mnuFile.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {this.mnuExit}); this.mnuFile.Shortcut = (System.Windows.Forms.Shortcut) resources.GetObject("mnuFile.Shortcut"); this.mnuFile.ShowShortcut = (bool) resources.GetObject("mnuFile.ShowShortcut"); this.mnuFile.Text = resources.GetString("mnuFile.Text"); this.mnuFile.Visible = (bool) resources.GetObject("mnuFile.Visible"); // //mnuExit // this.mnuExit.Enabled = (bool) resources.GetObject("mnuExit.Enabled"); this.mnuExit.Index = 0; this.mnuExit.Shortcut = (System.Windows.Forms.Shortcut) resources.GetObject("mnuExit.Shortcut"); this.mnuExit.ShowShortcut = (bool) resources.GetObject("mnuExit.ShowShortcut"); this.mnuExit.Text = resources.GetString("mnuExit.Text"); this.mnuExit.Visible = (bool) resources.GetObject("mnuExit.Visible"); // //mnuHelp // this.mnuHelp.Enabled = (bool) resources.GetObject("mnuHelp.Enabled"); this.mnuHelp.Index = 1; this.mnuHelp.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {this.mnuAbout}); this.mnuHelp.Shortcut = (System.Windows.Forms.Shortcut) resources.GetObject("mnuHelp.Shortcut"); this.mnuHelp.ShowShortcut = (bool) resources.GetObject("mnuHelp.ShowShortcut"); this.mnuHelp.Text = resources.GetString("mnuHelp.Text"); this.mnuHelp.Visible = (bool) resources.GetObject("mnuHelp.Visible"); // //mnuAbout // this.mnuAbout.Enabled = (bool) resources.GetObject("mnuAbout.Enabled"); this.mnuAbout.Index = 0; this.mnuAbout.Shortcut = (System.Windows.Forms.Shortcut) resources.GetObject("mnuAbout.Shortcut"); this.mnuAbout.ShowShortcut = (bool) resources.GetObject("mnuAbout.ShowShortcut"); this.mnuAbout.Text = resources.GetString("mnuAbout.Text"); this.mnuAbout.Visible = (bool) resources.GetObject("mnuAbout.Visible"); // //btnPageSetup // this.btnPageSetup.AccessibleDescription = resources.GetString("btnPageSetup.AccessibleDescription"); this.btnPageSetup.AccessibleName = resources.GetString("btnPageSetup.AccessibleName"); this.btnPageSetup.Anchor = (System.Windows.Forms.AnchorStyles) resources.GetObject("btnPageSetup.Anchor"); this.btnPageSetup.BackgroundImage = (System.Drawing.Image) resources.GetObject("btnPageSetup.BackgroundImage"); this.btnPageSetup.Dock = (System.Windows.Forms.DockStyle) resources.GetObject("btnPageSetup.Dock"); this.btnPageSetup.Enabled = (bool) resources.GetObject("btnPageSetup.Enabled"); this.btnPageSetup.FlatStyle = (System.Windows.Forms.FlatStyle) resources.GetObject("btnPageSetup.FlatStyle"); this.btnPageSetup.Font = (System.Drawing.Font) resources.GetObject("btnPageSetup.Font"); this.btnPageSetup.Image = (System.Drawing.Image) resources.GetObject("btnPageSetup.Image"); this.btnPageSetup.ImageAlign = (System.Drawing.ContentAlignment) resources.GetObject("btnPageSetup.ImageAlign"); this.btnPageSetup.ImageIndex = (int) resources.GetObject("btnPageSetup.ImageIndex"); this.btnPageSetup.ImeMode = (System.Windows.Forms.ImeMode) resources.GetObject("btnPageSetup.ImeMode"); this.btnPageSetup.Location = (System.Drawing.Point) resources.GetObject("btnPageSetup.Location"); this.btnPageSetup.Name = "btnPageSetup"; this.btnPageSetup.RightToLeft = (System.Windows.Forms.RightToLeft) resources.GetObject("btnPageSetup.RightToLeft"); this.btnPageSetup.Size = (System.Drawing.Size) resources.GetObject("btnPageSetup.Size"); this.btnPageSetup.TabIndex = (int) resources.GetObject("btnPageSetup.TabIndex"); this.btnPageSetup.Text = resources.GetString("btnPageSetup.Text"); this.btnPageSetup.TextAlign = (System.Drawing.ContentAlignment) resources.GetObject("btnPageSetup.TextAlign"); this.btnPageSetup.Visible = (bool) resources.GetObject("btnPageSetup.Visible"); // //btnPrintDialog // this.btnPrintDialog.AccessibleDescription = resources.GetString("btnPrintDialog.AccessibleDescription"); this.btnPrintDialog.AccessibleName = resources.GetString("btnPrintDialog.AccessibleName"); this.btnPrintDialog.Anchor = (System.Windows.Forms.AnchorStyles) resources.GetObject("btnPrintDialog.Anchor"); this.btnPrintDialog.BackgroundImage = (System.Drawing.Image) resources.GetObject("btnPrintDialog.BackgroundImage"); this.btnPrintDialog.Dock = (System.Windows.Forms.DockStyle) resources.GetObject("btnPrintDialog.Dock"); this.btnPrintDialog.Enabled = (bool) resources.GetObject("btnPrintDialog.Enabled"); this.btnPrintDialog.FlatStyle = (System.Windows.Forms.FlatStyle) resources.GetObject("btnPrintDialog.FlatStyle"); this.btnPrintDialog.Font = (System.Drawing.Font) resources.GetObject("btnPrintDialog.Font"); this.btnPrintDialog.Image = (System.Drawing.Image) resources.GetObject("btnPrintDialog.Image"); this.btnPrintDialog.ImageAlign = (System.Drawing.ContentAlignment) resources.GetObject("btnPrintDialog.ImageAlign"); this.btnPrintDialog.ImageIndex = (int) resources.GetObject("btnPrintDialog.ImageIndex"); this.btnPrintDialog.ImeMode = (System.Windows.Forms.ImeMode) resources.GetObject("btnPrintDialog.ImeMode"); this.btnPrintDialog.Location = (System.Drawing.Point) resources.GetObject("btnPrintDialog.Location"); this.btnPrintDialog.Name = "btnPrintDialog"; this.btnPrintDialog.RightToLeft = (System.Windows.Forms.RightToLeft) resources.GetObject("btnPrintDialog.RightToLeft"); this.btnPrintDialog.Size = (System.Drawing.Size) resources.GetObject("btnPrintDialog.Size"); this.btnPrintDialog.TabIndex = (int) resources.GetObject("btnPrintDialog.TabIndex"); this.btnPrintDialog.Text = resources.GetString("btnPrintDialog.Text"); this.btnPrintDialog.TextAlign = (System.Drawing.ContentAlignment) resources.GetObject("btnPrintDialog.TextAlign"); this.btnPrintDialog.Visible = (bool) resources.GetObject("btnPrintDialog.Visible"); // //btnPrintPreview // this.btnPrintPreview.AccessibleDescription = resources.GetString("btnPrintPreview.AccessibleDescription"); this.btnPrintPreview.AccessibleName = resources.GetString("btnPrintPreview.AccessibleName"); this.btnPrintPreview.Anchor = (System.Windows.Forms.AnchorStyles) resources.GetObject("btnPrintPreview.Anchor"); this.btnPrintPreview.BackgroundImage = (System.Drawing.Image) resources.GetObject("btnPrintPreview.BackgroundImage"); this.btnPrintPreview.Dock = (System.Windows.Forms.DockStyle) resources.GetObject("btnPrintPreview.Dock"); this.btnPrintPreview.Enabled = (bool) resources.GetObject("btnPrintPreview.Enabled"); this.btnPrintPreview.FlatStyle = (System.Windows.Forms.FlatStyle) resources.GetObject("btnPrintPreview.FlatStyle"); this.btnPrintPreview.Font = (System.Drawing.Font) resources.GetObject("btnPrintPreview.Font"); this.btnPrintPreview.Image = (System.Drawing.Image) resources.GetObject("btnPrintPreview.Image"); this.btnPrintPreview.ImageAlign = (System.Drawing.ContentAlignment) resources.GetObject("btnPrintPreview.ImageAlign"); this.btnPrintPreview.ImageIndex = (int) resources.GetObject("btnPrintPreview.ImageIndex"); this.btnPrintPreview.ImeMode = (System.Windows.Forms.ImeMode) resources.GetObject("btnPrintPreview.ImeMode"); this.btnPrintPreview.Location = (System.Drawing.Point) resources.GetObject("btnPrintPreview.Location"); this.btnPrintPreview.Name = "btnPrintPreview"; this.btnPrintPreview.RightToLeft = (System.Windows.Forms.RightToLeft) resources.GetObject("btnPrintPreview.RightToLeft"); this.btnPrintPreview.Size = (System.Drawing.Size) resources.GetObject("btnPrintPreview.Size"); this.btnPrintPreview.TabIndex = (int) resources.GetObject("btnPrintPreview.TabIndex"); this.btnPrintPreview.Text = resources.GetString("btnPrintPreview.Text"); this.btnPrintPreview.TextAlign = (System.Drawing.ContentAlignment) resources.GetObject("btnPrintPreview.TextAlign"); this.btnPrintPreview.Visible = (bool) resources.GetObject("btnPrintPreview.Visible"); // //odlgDocument // this.odlgDocument.Filter = resources.GetString("odlgDocument.Filter"); this.odlgDocument.Title = resources.GetString("odlgDocument.Title"); // //txtDocument // this.txtDocument.AccessibleDescription = resources.GetString("txtDocument.AccessibleDescription"); this.txtDocument.AccessibleName = resources.GetString("txtDocument.AccessibleName"); this.txtDocument.Anchor = (System.Windows.Forms.AnchorStyles) resources.GetObject("txtDocument.Anchor"); this.txtDocument.AutoSize = (bool) resources.GetObject("txtDocument.AutoSize"); this.txtDocument.BackgroundImage = (System.Drawing.Image) resources.GetObject("txtDocument.BackgroundImage"); this.txtDocument.Dock = (System.Windows.Forms.DockStyle) resources.GetObject("txtDocument.Dock"); this.txtDocument.Enabled = (bool) resources.GetObject("txtDocument.Enabled"); this.txtDocument.Font = (System.Drawing.Font) resources.GetObject("txtDocument.Font"); this.txtDocument.ImeMode = (System.Windows.Forms.ImeMode) resources.GetObject("txtDocument.ImeMode"); this.txtDocument.Location = (System.Drawing.Point) resources.GetObject("txtDocument.Location"); this.txtDocument.MaxLength = (int) resources.GetObject("txtDocument.MaxLength"); this.txtDocument.Multiline = (bool) resources.GetObject("txtDocument.Multiline"); this.txtDocument.Name = "txtDocument"; this.txtDocument.PasswordChar = (char) resources.GetObject("txtDocument.PasswordChar"); this.txtDocument.RightToLeft = (System.Windows.Forms.RightToLeft) resources.GetObject("txtDocument.RightToLeft"); this.txtDocument.ScrollBars = (System.Windows.Forms.ScrollBars) resources.GetObject("txtDocument.ScrollBars"); this.txtDocument.Size = (System.Drawing.Size) resources.GetObject("txtDocument.Size"); this.txtDocument.TabIndex = (int) resources.GetObject("txtDocument.TabIndex"); this.txtDocument.Text = resources.GetString("txtDocument.Text"); this.txtDocument.TextAlign = (System.Windows.Forms.HorizontalAlignment) resources.GetObject("txtDocument.TextAlign"); this.txtDocument.Visible = (bool) resources.GetObject("txtDocument.Visible"); this.txtDocument.WordWrap = (bool) resources.GetObject("txtDocument.WordWrap"); // //frmMain // this.AccessibleDescription = (string) resources.GetObject("$this.AccessibleDescription"); this.AccessibleName = (string) resources.GetObject("$this.AccessibleName"); this.Anchor = (System.Windows.Forms.AnchorStyles) resources.GetObject("$this.Anchor"); this.AutoScaleBaseSize = (System.Drawing.Size) resources.GetObject("$this.AutoScaleBaseSize"); this.AutoScroll = (bool) resources.GetObject("$this.AutoScroll"); this.AutoScrollMargin = (System.Drawing.Size) resources.GetObject("$this.AutoScrollMargin"); this.AutoScrollMinSize = (System.Drawing.Size) resources.GetObject("$this.AutoScrollMinSize"); this.BackgroundImage = (System.Drawing.Image) resources.GetObject("$this.BackgroundImage"); this.ClientSize = (System.Drawing.Size) resources.GetObject("$this.ClientSize"); this.Controls.AddRange(new System.Windows.Forms.Control[] {this.txtDocument, this.btnPageSetup, this.btnPrintDialog, this.btnPrintPreview}); this.Dock = (System.Windows.Forms.DockStyle) resources.GetObject("$this.Dock"); this.Enabled = (bool) resources.GetObject("$this.Enabled"); this.Font = (System.Drawing.Font) resources.GetObject("$this.Font"); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.Icon = (System.Drawing.Icon) resources.GetObject("$this.Icon"); this.ImeMode = (System.Windows.Forms.ImeMode) resources.GetObject("$this.ImeMode"); this.Location = (System.Drawing.Point) resources.GetObject("$this.Location"); this.MaximizeBox = false; this.MaximumSize = (System.Drawing.Size) resources.GetObject("$this.MaximumSize"); this.Menu = this.mnuMain; this.MinimumSize = (System.Drawing.Size) resources.GetObject("$this.MinimumSize"); this.Name = "frmMain"; this.RightToLeft = (System.Windows.Forms.RightToLeft) resources.GetObject("$this.RightToLeft"); this.StartPosition = (System.Windows.Forms.FormStartPosition) resources.GetObject("$this.StartPosition"); this.Text = resources.GetString("$this.Text"); this.Visible = (bool) resources.GetObject("$this.Visible"); this.ResumeLayout(false); this.Load +=new System.EventHandler(frmMain_Load); pdoc.PrintPage +=new PrintPageEventHandler(pdoc_PrintPage); this.btnPrintDialog.Click +=new EventHandler(btnPrintDialog_Click); this.btnPageSetup.Click +=new EventHandler(btnPageSetup_Click); this.btnPrintPreview.Click +=new EventHandler(btnPrintPreview_Click); this.mnuAbout.Click +=new EventHandler(mnuAbout_Click); this.mnuExit.Click +=new EventHandler(mnuExit_Click); } #endregion #region " Standard Menu Code " // This code simply shows the About form. private void mnuAbout_Click(object sender, System.EventArgs e) { // Open the About form in Dialog Mode frmAbout frm = new frmAbout(); frm.ShowDialog(this); frm.Dispose(); } // This code will close the form. private void mnuExit_Click(object sender, System.EventArgs e) { // Close the current form this.Close(); } #endregion // The PrintDialog allows the user to select the printer that they want to print // to, well other printing options. private void btnPrintDialog_Click(object sender, System.EventArgs e) //btnPrintDialog.Click; { PrintDialog dialog = new PrintDialog(); dialog.Document = pdoc; if (dialog.ShowDialog() == DialogResult.OK) { pdoc.Print(); } } // The PrintPreviewDialog is associated with the PrintDocument the preview is // rendered, the PrintPage event is triggered. This event is passed a graphics // context where it "draws" the page. private void btnPrintPreview_Click(object sender, System.EventArgs e) //btnPrintPreview.Click; { PrintPreviewDialog ppd = new PrintPreviewDialog(); try { ppd.Document = pdoc; ppd.ShowDialog(); } catch { MessageBox.Show("An error occurred while trying to load the " + "document for Print Preview. Make sure you currently have " + "access to a printer. A printer must be connected and " + "accessible for Print Preview to work.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error); } } // Page setup lets you specify things like the paper size, portrait, // landscape, etc. private void btnPageSetup_Click(object sender, System.EventArgs e) //btnPageSetup.Click; { PageSetupDialog psd = new PageSetupDialog(); psd.Document = pdoc; psd.PageSettings = pdoc.DefaultPageSettings; if (psd.ShowDialog() == DialogResult.OK) { pdoc.DefaultPageSettings = psd.PageSettings; } } // the Form's Load event, initializing the TextBox with some text // for printing. private void frmMain_Load(object sender, System.EventArgs e) { txtDocument.Text = "Lincoln's Gettysburg Address (November 19, 1863)" + Environment.NewLine + Environment.NewLine + "\t" + "Four score and seven years ago our fathers brought forth on this " + "continent a new nation, conceived in liberty and dedicated to the " + "proposition that all men are created equal. " + Environment.NewLine + Environment.NewLine + "\t" + "Now we are engaged in a great civil war, testing whether that " + "nation or any nation so conceived and so dedicated can long " + "endure. We are met on a great battlefield of that war. We have " + "come to dedicate a portion of that field a final " + "resting-place for those who here gave their lives that that " + "nation might live. It is altogether fitting and proper that we " + "should do this." + Environment.NewLine + Environment.NewLine + "\t" + "But in a larger sense, we can! dedicate, we can! consecrate, " + "we can! hallow this ground. The brave men, living and dead who " + "struggled here have consecrated it far above our poor power to " + "add or detract. The world will little note nor long remember " + "what we say here, but it can never forget what they did here. " + "It is for us the living rather to be dedicated here to the " + "unfinished work which they who fought here have thus far so " + "nobly advanced. It is rather for us to be here dedicated to " + "the great task remaining before us--that from these honored " + "dead we take increased devotion to that cause for which they " + "gave the last full measure of devotion--that we here highly " + "resolve that these dead shall ! have died in vain, that this " + "nation under God shall have a new birth of freedom, and that " + "government of the people, by the people, for the people shall " + "not perish from the earth."; } // PrintPage is the foundational printing event. This event gets fired for every // page that will be printed. You could also handle the BeginPrint and EndPrint // events for more control. // // The following is very // fast and useful for plain text Measurestring calculates the text that // can be fitted on an entire page. This is ! that useful, however, for // formatted text. In that case you would want to have word-level (vs page-level) // control, which is more complicated. // Declare a variable to hold the position of the last printed char. Declare // static so that subsequent PrintPage events can reference it. Static variables // are not supported inside a function in C# static int intCurrentChar; private void pdoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { // Initialize the font to be used for printing. Font font = new Font("Microsoft Sans Serif", 24); int intPrintAreaHeight; int intPrintAreaWidth; int marginLeft; int marginTop; // Initialize local variables that contain the bounds of the printing // area rectangle. intPrintAreaHeight = pdoc.DefaultPageSettings.PaperSize.Height - pdoc.DefaultPageSettings.Margins.Top - pdoc.DefaultPageSettings.Margins.Bottom; intPrintAreaWidth = pdoc.DefaultPageSettings.PaperSize.Width - pdoc.DefaultPageSettings.Margins.Left - pdoc.DefaultPageSettings.Margins.Right; // Initialize local variables to hold margin values that will serve // the X and Y coordinates for the upper left corner of the printing // area rectangle. marginLeft = pdoc.DefaultPageSettings.Margins.Left; // X coordinate marginTop = pdoc.DefaultPageSettings.Margins.Top; // Y coordinate // if the user selected Landscape mode, swap the printing area height // and width. if (pdoc.DefaultPageSettings.Landscape) { int intTemp = intPrintAreaHeight; intPrintAreaHeight = intPrintAreaWidth; intPrintAreaWidth = intTemp; } // Calculate the total number of lines in the document based on the height of // the printing area and the height of the font. int intLineCount= (int)(intPrintAreaHeight / font.Height); // Initialize the rectangle structure that defines the printing area. RectangleF rectPrintingArea = new RectangleF(marginLeft, marginTop, intPrintAreaWidth, intPrintAreaHeight); // Instantiate the stringFormat class, which encapsulates text layout // information (such alignment and line spacing), display manipulations // (such ellipsis insertion and national digit substitution) and OpenType // features. Use of stringFormat causes Measurestring and Drawstring to use // only an integer number of lines when printing each page, ignoring partial // lines that would otherwise likely be printed if the number of lines per // page do not divide up cleanly for each page (which is usually the case). // See further discussion in the SDK documentation about stringFormatFlags. StringFormat fmt = new StringFormat(StringFormatFlags.LineLimit); // Call Measurestring to determine the number of characters that will fit in // the printing area rectangle. The CharFitted Int32 is passed ref and used // later when calculating intCurrentChar and thus HasMorePages. LinesFilled // is ! needed for this sample but must be passed when passing CharsFitted. // Mid is used to pass the segment of remaining text left off from the // previous page of printing (recall that intCurrentChar was declared // static. int intLinesFilled; int intCharsFitted; e.Graphics.MeasureString(txtDocument.Text.Substring(intCurrentChar), font,new SizeF(intPrintAreaWidth, intPrintAreaHeight), fmt,out intCharsFitted, out intLinesFilled); // Print the text to the page. e.Graphics.DrawString(txtDocument.Text.Substring(intCurrentChar), font,Brushes.Black, rectPrintingArea, fmt); // Advance the current char to the last char printed on this page. // intCurrentChar is a static variable, its value can be used for the next // page to be printed. It is advanced by 1 and passed to Mid() to print the // next page (see above in Measurestring()). intCurrentChar += intCharsFitted; // HasMorePages tells the printing module whether another PrintPage event // should be fired. if (intCurrentChar < (txtDocument.Text.Length-1)) { e.HasMorePages = true; } else { e.HasMorePages = false; // You must explicitly reset intCurrentChar it is static. intCurrentChar = 0; } } } ----------------- frmAbout.cs ----------------- //Copyright (C) 2002 Microsoft Corporation //All rights reserved. //THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER //EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF //MERCHANTIBILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. //Requires the Trial or Release version of Visual Studio .NET Professional (or greater). using System.Windows.Forms; using System; public class frmAbout: System.Windows.Forms.Form { #region " Windows Form Designer generated code " public frmAbout () { //This call is required by the Windows Form Designer. InitializeComponent(); //Add any initialization after the InitializeComponent() call } //Form overrides dispose to clean up the component list. protected override void Dispose(bool disposing) { if (disposing) { if (components != null) { components.Dispose(); } } base.Dispose(disposing); } //Required by the Windows Form Designer private System.ComponentModel.IContainer components = null; //NOTE: The following procedure is required by the Windows Form Designer //It can be modified using the Windows Form Designer. //Do ! modify it using the code editor. private System.Windows.Forms.PictureBox pbIcon; private System.Windows.Forms.Label lblTitle; private System.Windows.Forms.Label lblVersion; private System.Windows.Forms.Label lblDescription; private System.Windows.Forms.Button cmdOK; private System.Windows.Forms.Label lblCopyright;

[탑크리에듀,국비지원과정,C#강좌] C# 명령문, 반복문

이번 강좌에서는 제어문 또는 명령문에 대해 보도록 합니다. 기존 언어와 매우 유사하니 간단히 살펴 보도록 하겠습니다. 먼제 선택을 위한 if, switch 문에 대해 보도록 하겠습니다. 1. if문 if statement : 어떤 조건의 참, 거짓을 판단하여 실행을 제어하는 구조에 사용되는 statement 입니다. condition 부분은 결과값은 반드시 true또는 false가 되어야 합니다.(No implicit conversion from int to bool ) 다른 언어들의 경우: 0 이나 -1을 false로 나머지를 true로 암시적 형 변환 int x; … if(x) …//must be if (x!=0) in c# if(x=0) …//must be if (x==0) in c# [예] enum Suit { Clubs , Hearts , Diamonds , Spades }; Suit trumps = Suit.Hearts; if ( trumps == Suit.Clubs ) color = "Black"; else if ( trumps == Suit.Hearts ) color = "Red"; else if ( trumps == Suit.Diamonds ) color = "Red"; else color ="Black"; 2. switch 문 switch문의 변수값과 일치하는 case로 분기 합니다. (진입점) 변수값 일치하는 case가 없을 경우 default로 분기 합니다. break문을 만나면 switch문 외부로 분가 합니다. (종단점) [예] switch(trumps) { case Suit.Clubs: case Suit.Spades: color = "Black" ; break; case Suit.Hearts: case Suit.Diamonds: color = "Red" ; break; default: color = "ERROR"; break; } 다음은 반복문에 대해 보도록 합니다. (while, do~while, for, foreach) 1. while문 형식: while (condition) { statements; } 조건이 참인 동안에 statement를 실행 합니다. [예] int Index = 0; while (Index < 10 ) { Console.WriteLine(Index); Index++; } 2.do~while문 형식 : do{ statements; } while (condition); while문과의 차이는 조건에 맞지 않더라도 statement를 한번은 수행하는 구조 입니다. 그러나 while문에서는 조건에 맞지 않으면 statement를 한번도 수행 하지 않을수도 있습니다. [예] int Index = 0; do { Console.WriteLine(Index); Index++; }while(Index < 10 ) 3. for문 형식: for(초기치; 조건; 업데이트 실행){ statements; } 일반적인 for문과 같으므로 별다른 설명은 하지 않겠습니다. [예] for ( int x=0; x < 10 ; x++) { //x는 0부터 10보다 작을때 까지 x를 1씩 증가하면서 x의 값을 찍으니 0부터 9까지 출력되겠죠... Console.WriteLine(x); } 아래와 같은것도 되는것 아시죠^^; for ( int x=0 , y = 0 ; x < 10 , y< 100 ; x++ , y++) 4. foreach문 형식: foreach(item in 배열 또는 컬렉션){ statements; } 배열: 여러 개의 데이터를 하나의 변수 또는 객체에 담아두는 것 컬렉션: 자유로운 형태로 여러 개의 데이터를 담아둘 수 있습니다. ArrayList, HashTable, Icollection 등이 있습니다. 실행순서를 설명 드리면 배열이나 컬렉션에서 하나의 항목을 읽은 후 statement를 수행하고 다음 foreach로 가서 다음 읽을것이 있으면 다시 읽고 statement를 실행하는 순서로 동작 합니다. 만약 다음 읽을것이 없다면 루프를 빠져 나옵니다. [예] ArrayList numbers = new ArrayList(); for ( int I= 0 ; I < 10 ; I++) { Numbers.Add(I); //0부터 9까지의 수를 ArrayList라는 컬렉션에 담는다. C#에서 모든 데이터형은 객체 임 } foreach(int number in numbers ) { //컬렉션에 객체가 있는 동안에 반복해서 그 값을 출력함, foreach를 사용하면 종료 조건을 기술하지 않아도 되므로 상당히 효율적 Console.WriteLine(number); } 이번에는 제어를 조절할 수 있는 break,continue에 대해 알아 보겠습니다. break : 반복문 내의 임의의 지점에서 루프를 빠져나가야 할 때 break문을 사용 합니다. 싸고 있는 루프중 가장 가가운 루프를 빠져 나갑니다. continue : 루프의 남은 부분을 skip하고 루프의 처음으로 제어를 옮깁니다.

[탑크리에듀,국비지원과정,C#강좌] C#연산자(Operators)

이번 강좌에서는 C#에서 사용 되어지는 연산자에 대해 알아 보도록 하겠습니다. 아래는 C#의 연산자 목록 입니다. 구분 연산자 기본 연산자 (x), ., f(x), a[x], x++, x--, new, typeof, sizeof, checked, unchecked 단항 연산자 +, -, !, ~, ++x, --x 산술 연산자 +, -, *, /, % 쉬프트 연산자 <<, >> 비교 연산자 <, >, <=, >=, is 비트 연산자 &, ^, | 논리 연산자 &&, || 조건 연산자 ?: 할당 연산자 =, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |= 연산자 이름 의미 (x) 괄호 연산의 우선순위 명시 x.y 점 클래스의 메소드나 속성 f() 메소드괄호 메소드의 인자를 괄호안에 넣는다 a[x] 대괄호 배열이나 인덱서의 인덱스 checked 형변환시 오버플로우를 체크 unchecked 형변환시 오버플로우 체크 않음 typeof() 객체에 대한 정보를 얻음 ( 리플렉션참고 ) sizeof() 객체의 크기를 얻음 산술연산자( Mathematical operators) Operator Description = Assignment operator += a+=b is equivalent to a = a + b -= a-=b is equivalent to a = a – b *= a*=b is equivalent to a = a * b /= a/=b is equivalent to a = a / b %= a%=b is equivalent to a = a % b <<= a<<=b is equivalent to a = a << b >>= a>>=b is equivalent to a = a >> b &= a&=b is equivalent to a = a & b ^= a^=b is equivalent to a = a ^ b |= a|=b is equivalent to a = a | b 관계 연산자(Relational operators) Operator Description == Equals != Not equal to < Less than <= Less than or equal to > Greater than >= Greater than or equal to 예)if (x == 2.0 && y != 4.0) { // do some stuff } 논리연산자(Logical Operators) Operator Description & Bitwise AND | Bitwise OR ^ Bitwise exclusive OR && Logical AND || Logical OR ! Not ?: Ternary && 는 AND, || 는 OR l ^ 는 XOR, ! 는 NOT 의 의미 하나짜리는 비트연산자로서 l & 는 AND, | 는 OR l ^ 는 XOR, ~ 는 NOT 의 의미 입니다. 예) a = b if (b [참고하세요] X &&Y 의 경우 X 가 false 이면 더 이상 Y 를 계산하지 않아도 false 임을 아니까 false 로 결정된다 . 결국 X가 true 일때만 Y 를 계산 하는 겁니다. X || Y 의 경우 X가 true 이면 더 이상 Y 를 계산하지 않고 true로 결정 합니다. 또한 X 가 false 인 경우에만 Y 를 계산 합니다. X|Y 나 X &Y 의 경우 X 값에 관계없이 B와 같이 계산 한 후에 true, false를 결정 합니다. 할당연산자( Assignment operators ) Operator Description = Assignment operator += a+=b is equivalent to a = a + b -= a-=b is equivalent to a = a – b *= a*=b is equivalent to a = a * b /= a/=b is equivalent to a = a / b %= a%=b is equivalent to a = a % b <<= a<<=b is equivalent to a = a << b >>= a>>=b is equivalent to a = a >> b &= a&=b is equivalent to a = a & b ^= a^=b is equivalent to a = a ^ b |= a|=b is equivalent to a = a | b x << 4 --> 왼쪽으로 4 bit shift 1bit shift 마다 값이 2 배씩 증가 x >> 4 --> 오른쪽으로 4 bit shift 1bit shift 마다 값이 1/2 배씩 감소 [아래의 예제를 따라 해 보세요] using System; public class Bitoper { public static void Main(string[] args) { int i = 16; int j = 64; int k; k = i & j; //i와 j를 비트 연산 i = i >>3; //i를 3비트 우쉬프트 j = i<<3; //i를 3비트 좌쉬프트 Console.WriteLine("k={0}, i={1}, j={2}", k,i,j); Console.ReadLine(); } } [결과] k=0, i=2, j=16 객체 연산자( Object operators ) Operator Description () Type cast operator. [] Accesses an element of an array or collection, or is the indexer operator. typeof Returns type of object or if the argument is a primitive the primitive type of the argument is returned. sizeof Struct size retrieval. . Member access. is Object comparison as Performs object downcast. new Calls a constructor. For a reference type, a new object is allocated on the heap. For a value type, the fields of the value type are initialized to their default values. is operator - determine if an object derives from another class (다른 클래스로 부터 파생 되었는지 확인하는 연산자, 파생되었다는 이야기는 하위클래스라는 이야기임.. 이부분은 객체 지향을 공부 하신후 다시 확인 바랍니다.) if ( a is bird ) b = (bird) a; //safe else Console.WriteLine("Not a Bird"); as operator - object “downcasts” (두개의 Reference-Type을 casting 하는 것처럼 형병환을 합니다. 변환이 되면 변환 된것을 넘겨주고 변환이 안되면 null을 돌려 줍니다. 이 부분 역시 객체 지향을 공부 하신후 다시 확인 바랍니다.) Bird b = a as Bird; //a를 Bird로 변환을 시도하여 변환이 되면 변환된것을 b에 돌려주고 아니면 null을 돌린다. if ( b == null ) Console.WriteLine("Not a Bird"); sizeof 연산자 주어진 데이터 형식의 크기를 byte 단위로 돌려 줍니다. 제약사항 --> sizeof 연산이 가능한 형식은 값 형식인 경우int, float, enum, struct등이 있습니다. 일반연산자( Miscellaneous operators ) Operator Description checked Arithmetic checking turned on unchecked Arithmetic checking turned off 어렵지 않습니다. 다음 예를 이해하도록 하죠~ checked { int number = int.MaxValue; Console.WriteLine(++number); } 위예제에서는 Overflow 체크를 한다는 이야기 입니다. 즉 OverfloException이 발생 합니다. 물론 컴파일은 됩니다. 런타임중 예외가 발생한다는 이야기 입니다. unchecked { int number = int.MaxValue; Console.WriteLine(++number); } 위의 예제는 오버플로우 체크를 하지 않겠다는 의미 이므로 정수형의 최대갑에다 1을 더하니까 2의 보수 표현에 의해 -값으로 바뀌게 됩니다.

[탑크리에듀,국비지원과정,C#강좌] User-Defined Data Type(Enumeration, Struct)

이번 강좌에서는 User-Defined Type중에 Enumeration(열거) 형 대해 알아 보겠습니다. ------------------------------ User-Defined Data Types -------------------------- 1. Enumeration Type 정의 : enum Color { Red , Green , Blue } 사용법 : Color colorPalette = Color.Red; , Console.WriteLine(“{0}” , colorPalette); //display Red [예제] using System; namespace ConsoleApplication { enum Day { Monday, Thesday, Wednesday, Thursday, Friday, Saturday, Sunday } public class EnumTest { static void Main() { Day whatDay = Day.Monday; Console.WriteLine("{0}", whatDay); whatDay = (Day)1; Console.WriteLine("{0}", whatDay); } } } [결과] Monday Thesday 2. Structure Types 여러가지 형식의 자료들을 모아둔 틀이며 C#에서는 메소드가 없는 클래스 입니다. 구조체의 정의 방법 public struct Employee { String firstname; Int age; } 사용 방법 Employee companyEmployee; companyEmployee.firstname = “ Joe ” ; companyEmployee.age = 23; [예제] using System; struct Emp { public int id; public string name; } class EmpTest { public static void Main() { Emp e; e.id = 1; e.name = "1길동"; Console.WriteLine("사번: {0}",e.id); Console.WriteLine("이름: {0}",e.name); } } [결과] Monday Thesday

[탑크리에듀,국비지원과정,C#강좌] CTS(Common Type System)와 C#의 자료형(Value-Type, Reference-Type)

이번 강좌에서는 C#에서의 변수에 대해 알아 보자구요~ 크게 두가지 정도로 구분 합니다. 실제 그값을 가지고 있는 Value-Type , 가지고 있는것이 값이 아니고 무언가를 참조하는(포인터 변수처럼) 변수인 Reference-Type 두가지로 구분 합니다. 먼저 그러한 데이터 타입을 제공하는 닷넷 프레임웍의 CTS(Common Type System) 에 대해 알아 보도록 하겠습니다. ---------------------------- CTS(Common Type System ---------------------------- • CTS supports object-oriented and Procedural languages. • CTS supports both value and reference types 좀더 알아보면 CTS 는 닷넷 프레임워크에서 동작하는 모든 프로그래밍 언어(C#, VB.Net, J#)들이 쪽같은 데이터형식을 사용하도록 해주는 것입니다. (System.Int32라는 클래스는 CTS에서 제공하는 int 형입니다. 이것은 닷넷에서의 어떠한 개발언어에서도 사용이 가능 합니다.) 모든 데이터형식들은 기본적으로 객체에서 파생되었으며 Value type 은 객체 형식을 포장 (sealing) 해 놓은 개념 입니다. ----------------------------- Value-Type, Reference-Type ----------------------------- Value-Type CTS 에서는 value type 과 reference type 을 지원하는데 Value type 변수들은 데이터를 직접 가지고 있습니다 .예를들어 int i=10 이라고 쓰면 i 변수에는 10 이 직접 들어 있는 것입니다. int j=i 라고 하면 i 의 값이 j에 복사되어 들어 가는 것입니다.(다아시는거죠^^), 자바에서의 기본 자료형과 같은 겁니다. Value-Type은 Built-in Type과 User-Defined Type 두가지가 있습니다. int, long, float, double 등은 Built-in Type 이고 struct, enum등은 User-Defined Type 입니다. Reference-Type 데이터를 직접 저장하는 것이 아니라 레퍼런스(참조값)을 저장 합니다.(Store references to their data) 그러므로 두개의 레퍼런스형 변수는 같은 데이터(오브젝트)를 지칭하는 것이 가능 합니다.( Two reference variables can reference same object) 물론 같은 것을 서로 쳐다 볼수 있으므로 한쪽에서 변경을 하면 다른쪽은 스스로 변경을 안했어도 나중에 값을 꺼내 보면 당연히 바뀌어져 있겠죠^^;(Operations on one can affect another) ------------------------------- Built-in Data Type ------------------------------- 정수형 예약어 구조체형식 크기 (Bit) 범위 sbyte System.Sbyte 8 -128~127 byte System.Byte 8 0~255 short System.Int16 16 -32,768~32,767 ushort System.UInt16 16 0~65,535 int System.Int32 32 -2,147,483,648 ~2,147,483,647 uint Systen.UInt32 32 0~4,294,967,295 long System.Int64 64 -(2^63) ~ 2^63-1 ulong System.UInt64 64 0~ 2^64-1 실수형, 기타 예약어 구조체형식 크기 (Bit) 범위 실수형 float System.Single 32 1.5x10^-46 ~3.4x10^38 double System.Double 64 5.0x10^-324 ~1.7x10^308 decimal System.Decimal 128 1.0x10^-28 ~7.9x10^28 기타 char System.UInt16 16 유니코드 1 자 bool System.Int32 1 0 또는 1 Boolean 형 boolean type 이 가질 수 있는 값은 true 와 false 입니다. 예 ) bool b = true --> true 는 1 과는 다르며 , 마찬가지로 false 는 0 과는 다릅니다. (C 에서는 TRUE, FALSE 를 #define 을 통해 정의하여 사용 했었습니다.. 정수를 암묵적으로 boolean 형으로 사용한 것이죠.), true 와 false 로 산술 연산을 할 수 없으며 오로지 논리 연산자를 가진 수식에 대해서만 사용가능 합니다. 변수 선언 하는 방법 int itemCount; int itemCount , employeNumber; ( Possible to declare Multiple variables in one) int employeeNumber; employeeNumber = 23; int employeeNumber= 23; 또한 Charater형은 다음과 같이 선언 합니다. char middleInitial= ‘J'; C#은 유니코드를 사용하며 char형은 한 문자를 저장하는데 사용 합니다. Itemcount = Itemcount + 40; --> ItemCount += 40; --> 이건 다아시죠... 연산자(Operator) 구분 연산자 기본 연산자 (x), ., f(x), a[x], x++, x--, new, typeof, sizeof, checked, unchecked 단항 연산자 +, -, !, ~, ++x, --x 산술 연산자 +, -, *, /, % 쉬프트 연산자 <<, >> 비교 연산자 <, >, <=, >=, is 비트 연산자 &, ^, | 논리 연산자 &&, || 조건 연산자 ?: 할당 연산자 =, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |= [isOperator 예제] is연산자는 런타임시 주어진 타입과 객체가 서로 호환이 되는지를 검사하는 연산자 입니다. 또한 as 연산자는 Type을 변환하는데 변환이 되면 변환 시키고 변환이 안되면 NULL을 돌려 줍니다...(참고하세요~) //is 연산자 예제 using System; class isOperator { static void Main() { //C#은 모든 타입을 객체로 처리한다. //System.Int32의 BaseType은 System.ValueType이다. //System.Object > System.ValueType > System.Int32 int i=0; object o; Console.WriteLine("i is int? {0}", i is int); Console.WriteLine("i is long? {0}", i is long); if (i is object) { o = i; Console.WriteLine("o의 Base Type은 " + o.GetType().BaseType); } } } --------------------------------------------- 모든 Object(객체)들이 가지는 메소드 --------------------------------------------- 객체 지향 프로그래밍을 하는것은 객체를 많이 다른다는 이야기 입니다. 이번에는 참고로 모든 객체들이 가지고 있는 기본적인 메소드가 어떤것이 있는지 필요한것만 보도록 하겠습니다. 닷넷에서는 System.Object가 모든 객체의 최상위 클래스 입니다. (물론 자바에선 java.lang.Object 입니다.) 메소드명 설명 bool Equals() 같은 객체인지 비교, 동일한 메모리 공간을 차지해야... int GetHashCode() 해쉬값을 얻음 Type GetType() Type 에 관한 정보(형식 정보)를 돌려 줍니다. string ToString() 객체를 대표하는 문자열 반환, 일반적으로 문자열로 변환한다고 보면 됩니다.

[탑크리에듀,국비지원과정,C#강좌] C#으로 만든 주소록

덤으로 간단히 만든 주소록을 올려 봅니다... 이 주소록 볼때 마다 조현석씨가 아롱거리는군요~~~ 다시 한번 득남 축하 합니다. 제 기억으로 이 주소록은 거의 현석씨께서 만드신 것 같은데...(맞나?) Visual Studio .Net 에서 작성하시면 되구요 ... 대충 보시면 이해가 되겠지만 ADO.Net을 사용한 예제이며 DB는 오라클을 사용 했습니다. (주소에 대한 입력/수정/삭제 가능하구요, 검색도 되는 멋진 주소록 입니다.) Oracle의 Scott에 아래의 주소록 테이블을 만드신 후 실습 바랍니다. /* * * 실습용 Table Script create table AddrBook ( name varchar2(20) not null primary key, sex varchar2(2) not null constraint ck_sex check (sex in ('M','F')), addr varchar2(50), tel varchar2(20) not null ) * * */ -------------------------------------------------------------------- Visual Studio .Net을 실행 하신 후 C#, Window 응용 프로그램을 선택, 프로젝트 이름은 주소록으로 주시기 바랍니다. AddrBook.cs와 CodeFile1.cs 두개의 파일을 만들어 주시면 됩니다. CodeFile1은 AddrBook.cs에서 DB 처리 부분을 탇게될 라이브러리 형태 입니다. AddrBook.cs 파일을 만들려면 새프로젝트가 시작된 상태에서 우측의 솔루션 탐색기에서 주소록에서 마우스 우측 버튼을 눌러 추가 --> 구성요소 추가 --> 새항목 추가 --> 윈도우 폼을 하시고 CodeFile1.cs의 경우 CodeFile 로 하자구요~ 우선 아래의 AddrBook.cs를 다 입력하고 나면 저절로 디자인 화면에 아래처럼 디자인된 화면이 나타날겁니다. 물론 실제 개발하면 대부분의 GUI 프로그램 처럼 먼저 디자인을 하고 나중에 필요한 스크립트를 추가하는 형태가 되겠죠... 주소록1.jpg ------------------------- 1. AddrBook.cs ------------------------- using System; using System.Data.OleDb; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; namespace medical { /// /// CDJohap에 대한 요약 설명입니다. /// public class AddrBook : System.Windows.Forms.Form { private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.Label label6; private System.Windows.Forms.ListView listView1; private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label4; private System.Windows.Forms.ColumnHeader Gubun; private System.Windows.Forms.ColumnHeader JohapCd; private System.Windows.Forms.ColumnHeader JohapNm; private System.Windows.Forms.ColumnHeader Bigo; private System.Windows.Forms.Button btnNew; private System.Windows.Forms.Button btnInput; private System.Windows.Forms.Button btnUpdate; private System.Windows.Forms.Button btnDelete; private System.Windows.Forms.Button btnSearch; private System.Windows.Forms.TextBox txtAddr; private System.Windows.Forms.TextBox txtName; private System.Windows.Forms.TextBox txtTel; private System.Windows.Forms.ComboBox comSex; private System.Windows.Forms.TextBox txtSearchName; /// /// 필수 디자이너 변수입니다. /// private System.ComponentModel.Container components = null; public AddrBook() { // // Windows Form 디자이너 지원에 필요합니다. // InitializeComponent(); // // TODO: InitializeComponent를 호출한 다음 생성자 코드를 추가합니다. // } /// /// 사용 중인 모든 리소스를 정리합니다. /// protected override void Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// /// 디자이너 지원에 필요한 메서드입니다. /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오. /// private void InitializeComponent() { this.Gubun = new System.Windows.Forms.ColumnHeader(); this.JohapCd = new System.Windows.Forms.ColumnHeader(); this.groupBox1 = new System.Windows.Forms.GroupBox(); this.btnSearch = new System.Windows.Forms.Button(); this.txtSearchName = new System.Windows.Forms.TextBox(); this.label6 = new System.Windows.Forms.Label(); this.txtAddr = new System.Windows.Forms.TextBox(); this.JohapNm = new System.Windows.Forms.ColumnHeader(); this.listView1 = new System.Windows.Forms.ListView(); this.Bigo = new System.Windows.Forms.ColumnHeader(); this.txtName = new System.Windows.Forms.TextBox(); this.label3 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label(); this.txtTel = new System.Windows.Forms.TextBox(); this.label4 = new System.Windows.Forms.Label(); this.comSex = new System.Windows.Forms.ComboBox(); this.btnNew = new System.Windows.Forms.Button(); this.btnInput = new System.Windows.Forms.Button(); this.btnUpdate = new System.Windows.Forms.Button(); this.btnDelete = new System.Windows.Forms.Button(); this.groupBox1.SuspendLayout(); this.SuspendLayout(); // // Gubun // this.Gubun.Text = "성별"; this.Gubun.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; this.Gubun.Width = 100; // // JohapCd // this.JohapCd.Text = "성명"; this.JohapCd.Width = 80; // // groupBox1 // this.groupBox1.Controls.Add(this.btnSearch); this.groupBox1.Controls.Add(this.txtSearchName); this.groupBox1.Location = new System.Drawing.Point(8, 6); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(264, 52); this.groupBox1.TabIndex = 38; this.groupBox1.TabStop = false; this.groupBox1.Text = "사용자 검색창 : 성명"; // // btnSearch // this.btnSearch.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(224)), ((System.Byte)(224)), ((System.Byte)(224))); this.btnSearch.Cursor = System.Windows.Forms.Cursors.Hand; this.btnSearch.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnSearch.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(129))); this.btnSearch.Location = new System.Drawing.Point(176, 16); this.btnSearch.Name = "btnSearch"; this.btnSearch.Size = new System.Drawing.Size(72, 26); this.btnSearch.TabIndex = 47; this.btnSearch.Text = "검색"; this.btnSearch.Click += new System.EventHandler(this.btnSearch_Click); // // txtSearchName // this.txtSearchName.AutoSize = false; this.txtSearchName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtSearchName.Font = new System.Drawing.Font("굴림", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(129))); this.txtSearchName.Location = new System.Drawing.Point(17, 16); this.txtSearchName.Name = "txtSearchName"; this.txtSearchName.Size = new System.Drawing.Size(160, 26); this.txtSearchName.TabIndex = 47; this.txtSearchName.Text = ""; // // label6 // this.label6.BackColor = System.Drawing.Color.White; this.label6.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.label6.Font = new System.Drawing.Font("굴림", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(129))); this.label6.Location = new System.Drawing.Point(16, 130); this.label6.Name = "label6"; this.label6.Size = new System.Drawing.Size(550, 2); this.label6.TabIndex = 34; // // txtAddr // this.txtAddr.AutoSize = false; this.txtAddr.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtAddr.Font = new System.Drawing.Font("굴림", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(129))); this.txtAddr.Location = new System.Drawing.Point(103, 94); this.txtAddr.Name = "txtAddr"; this.txtAddr.Size = new System.Drawing.Size(160, 26); this.txtAddr.TabIndex = 33; this.txtAddr.Text = ""; // // JohapNm // this.JohapNm.Text = "주소"; this.JohapNm.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; this.JohapNm.Width = 200; // // listView1 // this.listView1.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(255)), ((System.Byte)(255)), ((System.Byte)(225))); this.listView1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.JohapCd, this.Gubun, this.JohapNm, this.Bigo}); this.listView1.Font = new System.Drawing.Font("굴림", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(129))); this.listView1.FullRowSelect = true; this.listView1.GridLines = true; this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; this.listView1.Location = new System.Drawing.Point(8, 144); this.listView1.Name = "listView1"; this.listView1.Size = new System.Drawing.Size(568, 368); this.listView1.TabIndex = 31; this.listView1.View = System.Windows.Forms.View.Details; this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged); // // Bigo // this.Bigo.Text = "전화번호"; this.Bigo.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; this.Bigo.Width = 175; // // txtName // this.txtName.AutoSize = false; this.txtName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtName.Font = new System.Drawing.Font("굴림", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(129))); this.txtName.Location = new System.Drawing.Point(103, 70); this.txtName.Name = "txtName"; this.txtName.Size = new System.Drawing.Size(160, 26); this.txtName.TabIndex = 29; this.txtName.Text = ""; // // label3 // this.label3.BackColor = System.Drawing.SystemColors.Control; this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.label3.Font = new System.Drawing.Font("굴림", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(129))); this.label3.Location = new System.Drawing.Point(8, 94); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(96, 26); this.label3.TabIndex = 28; this.label3.Text = "주소"; this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // label2 // this.label2.BackColor = System.Drawing.SystemColors.Control; this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.label2.Font = new System.Drawing.Font("굴림", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(129))); this.label2.Location = new System.Drawing.Point(8, 70); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(96, 26); this.label2.TabIndex = 27; this.label2.Text = "성명*"; this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // label1 // this.label1.BackColor = System.Drawing.SystemColors.Control; this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.label1.Font = new System.Drawing.Font("굴림", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(129))); this.label1.Location = new System.Drawing.Point(262, 70); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(96, 26); this.label1.TabIndex = 32; this.label1.Text = "성별*"; this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // txtTel // this.txtTel.AutoSize = false; this.txtTel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtTel.Font = new System.Drawing.Font("굴림", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(129))); this.txtTel.Location = new System.Drawing.Point(357, 94); this.txtTel.Name = "txtTel"; this.txtTel.Size = new System.Drawing.Size(216, 26); this.txtTel.TabIndex = 39; this.txtTel.Text = ""; // // label4 // this.label4.BackColor = System.Drawing.SystemColors.Control; this.label4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.label4.Font = new System.Drawing.Font("굴림", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(129))); this.label4.Location = new System.Drawing.Point(262, 94); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(96, 26); this.label4.TabIndex = 40; this.label4.Text = "전화번호*"; this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // comSex // this.comSex.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comSex.Font = new System.Drawing.Font("굴림", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(129))); this.comSex.ImeMode = System.Windows.Forms.ImeMode.NoControl; this.comSex.Location = new System.Drawing.Point(357, 72); this.comSex.Name = "comSex"; this.comSex.Size = new System.Drawing.Size(216, 23); this.comSex.TabIndex = 41; // // btnNew // this.btnNew.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(224)), ((System.Byte)(224)), ((System.Byte)(224))); this.btnNew.Cursor = System.Windows.Forms.Cursors.Hand; this.btnNew.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnNew.Font = new System.Drawing.Font("굴림", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(129))); this.btnNew.Location = new System.Drawing.Point(288, 24); this.btnNew.Name = "btnNew"; this.btnNew.Size = new System.Drawing.Size(72, 26); this.btnNew.TabIndex = 43; this.btnNew.Text = "신규"; this.btnNew.Click += new System.EventHandler(this.btnNew_Click); // // btnInput // this.btnInput.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(224)), ((System.Byte)(224)), ((System.Byte)(224))); this.btnInput.Cursor = System.Windows.Forms.Cursors.Hand; this.btnInput.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnInput.Font = new System.Drawing.Font("굴림", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(129))); this.btnInput.Location = new System.Drawing.Point(359, 24); this.btnInput.Name = "btnInput"; this.btnInput.Size = new System.Drawing.Size(72, 26); this.btnInput.TabIndex = 44; this.btnInput.Text = "입력"; this.btnInput.Click += new System.EventHandler(this.btnInput_Click); // // btnUpdate // this.btnUpdate.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(224)), ((System.Byte)(224)), ((System.Byte)(224))); this.btnUpdate.Cursor = System.Windows.Forms.Cursors.Hand; this.btnUpdate.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnUpdate.Font = new System.Drawing.Font("굴림", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(129))); this.btnUpdate.Location = new System.Drawing.Point(430, 24); this.btnUpdate.Name = "btnUpdate"; this.btnUpdate.Size = new System.Drawing.Size(72, 26); this.btnUpdate.TabIndex = 45; this.btnUpdate.Text = "수정"; this.btnUpdate.Click += new System.EventHandler(this.btnUpdate_Click); // // btnDelete // this.btnDelete.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(224)), ((System.Byte)(224)), ((System.Byte)(224))); this.btnDelete.Cursor = System.Windows.Forms.Cursors.Hand; this.btnDelete.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnDelete.Font = new System.Drawing.Font("굴림", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(129))); this.btnDelete.Location = new System.Drawing.Point(501, 24); this.btnDelete.Name = "btnDelete"; this.btnDelete.Size = new System.Drawing.Size(72, 26); this.btnDelete.TabIndex = 46; this.btnDelete.Text = "삭제"; this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click); // // AddrBook // this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); this.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(252)), ((System.Byte)(242)), ((System.Byte)(255))); this.ClientSize = new System.Drawing.Size(584, 516); this.Controls.Add(this.btnDelete); this.Controls.Add(this.btnUpdate); this.Controls.Add(this.btnInput); this.Controls.Add(this.btnNew); this.Controls.Add(this.comSex); this.Controls.Add(this.txtTel); this.Controls.Add(this.label4); this.Controls.Add(this.groupBox1); this.Controls.Add(this.label6); this.Controls.Add(this.txtAddr); this.Controls.Add(this.listView1); this.Controls.Add(this.txtName); this.Controls.Add(this.label3); this.Controls.Add(this.label2); this.Controls.Add(this.label1); this.Name = "AddrBook"; this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; this.Text = "주소록"; this.Load += new System.EventHandler(this.CDJohap_Load); this.groupBox1.ResumeLayout(false); this.ResumeLayout(false); } #endregion static void Main() { Application.Run(new AddrBook()); } private OleDbConnection LocalConn; //************************************************************** // // ListView에 성명 데이터 전체를 로드하는 함수 // // //************************************************************** private void DataLoad(OleDbDataReader myDataReader) { listView1.Items.Clear(); while(myDataReader.Read()) { ListViewItem myitem1; string gubun; if (myDataReader["Sex"].ToString()=="M") { gubun = "남자"; } else { gubun = "여자"; } myitem1 = new ListViewItem(myDataReader["Name"].ToString()); myitem1.SubItems.Add(gubun); //myitem1.SubItems.Add(myDataReader["Addr"].ToString()); //주소가 null 값을 리턴하면... if(myDataReader.IsDBNull(2)) { myitem1.SubItems.Add(""); } else { myitem1.SubItems.Add(myDataReader["Addr"].ToString()); } //Bigo 가 null 값을 리턴하면... myitem1.SubItems.Add(myDataReader["Tel"].ToString()); listView1.Items.Add(myitem1); } myDataReader.Close(); } //************************************************************** // // 주소록 폼이 로딩 될때 전체 데이터를 ListView에 로딩 // 콤보박스 초기화 작업 // //************************************************************** private void CDJohap_Load(object sender, System.EventArgs e) { try { //-------------------------------------------- LocalConn = Common_DB.DBConnection(); //-------------------------------------------- LocalConn.Open(); OleDbDataReader myReader = Common_DB.DataSelect("select * from AddrBook ",LocalConn); DataLoad(myReader); //Combo Box 채우기 comSex.Items.Add("남자"); comSex.Items.Add("여자"); } catch(Exception ex) { MessageBox.Show(ex.Message, "AddrBook Form Loading"); } finally { LocalConn.Close(); } } //************************************************************** // // ListView에 마우스를 클릭 했을때 윗부분의 TextBox에 자료 로딩 // 2003.10.20 // //************************************************************** private void listView1_SelectedIndexChanged(object sender, System.EventArgs e) { try { txtName.Text = listView1.SelectedItems[0].SubItems[0].Text; comSex.Text = listView1.SelectedItems[0].SubItems[1].Text; txtAddr.Text = listView1.SelectedItems[0].SubItems[2].Text; txtTel.Text = listView1.SelectedItems[0].SubItems[3].Text; } catch(Exception) { //MessageBox.Show(ex.Message, "listView1_SelectedIndexChanged"); } } //************************************************************** // // 신규버튼 클릭시... TextBox부분을 Clear(새로운 데이터 입력을 위한) // // //************************************************************** private void btnNew_Click(object sender, System.EventArgs e) { txtName.Text=""; txtAddr.Text=""; comSex.Text="남자"; txtTel.Text=""; } //************************************************************** // // 입력 버튼 클릭시 DB에 Insert 하는 부분 // // //************************************************************** private void btnInput_Click(object sender, System.EventArgs e) { if(txtName.Text==""|| txtTel.Text==""||comSex.Text=="") { MessageBox.Show("성명, 성별, 전화번호는 필수 입력사항 입니다."); txtName.Focus(); return; } string gubun; if (comSex.Text=="남자") { gubun="M"; } else { gubun="F"; } LocalConn.Open(); string myExecuteQuery = "Insert Into AddrBook (Name, Sex, Addr, Tel) values("; myExecuteQuery += "'" + txtName.Text+"'"+","; myExecuteQuery += "'" + gubun+"'"+","; myExecuteQuery += "'"+ txtAddr.Text + "'" + ","; myExecuteQuery += "'"+ txtTel.Text + "'" + ")"; if (Common_DB.DataManupulation(myExecuteQuery, LocalConn)) { OleDbDataReader myReader = Common_DB.DataSelect("select * from AddrBook",LocalConn); DataLoad(myReader); MessageBox.Show("정상적으로 입력 되었습니다..."); } LocalConn.Close(); } //************************************************************** // // 수정 버튼 클릭시 DB에 Update 하는 부분 // // //************************************************************** private void btnUpdate_Click(object sender, System.EventArgs e) { if(txtName.Text==""|| txtTel.Text==""||comSex.Text=="") { MessageBox.Show("성명, 성별, 전화번호는 필수 입력사항 입니다."); txtName.Focus(); return; } string gubun; if (comSex.Text=="남자") { gubun="M"; } else { gubun="F"; } LocalConn.Open(); string myExecuteQuery = "Update AddrBook set Name='" + txtName.Text + "'" + ","; myExecuteQuery += " Addr = '" + txtAddr.Text + "'" + ","; myExecuteQuery += " Sex = '" + gubun + "'" + ","; myExecuteQuery += " Tel = '" + txtTel.Text + "'" ; myExecuteQuery += " where Name = " + "'" + txtName.Text + "'"; if (Common_DB.DataManupulation(myExecuteQuery, LocalConn)) { OleDbDataReader myReader = Common_DB.DataSelect("select * from AddrBook",LocalConn); DataLoad(myReader); MessageBox.Show(" 정상적으로 수정 되었습니다..."); } LocalConn.Close(); } //************************************************************** // // 삭제 버튼클릭시 DB의 자료를 Delete // // //************************************************************** private void btnDelete_Click(object sender, System.EventArgs e) { OleDbDataReader myReader=null; if(txtName.Text==""|| txtTel.Text==""||comSex.Text=="") { MessageBox.Show("성명, 성별, 전화번호는 필수 입력사항 입니다."); txtName.Focus(); return; } //------- 삭제 확인 if (MessageBox.Show ("정말 삭제 하시겠습니까?", "삭제확인", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) { return; } LocalConn.Open(); string myExecuteQuery = "Delete AddrBook "; myExecuteQuery += " where Name = " + "'" + txtName.Text + "'"; if (Common_DB.DataManupulation(myExecuteQuery, LocalConn)) { myReader = Common_DB.DataSelect("select * from AddrBook",LocalConn); DataLoad(myReader); MessageBox.Show(" 정상적으로 삭제 되었습니다..."); } LocalConn.Close(); } //************************************************************** // // 검색 버튼클릭시 DB의 자료를 검색 // // //************************************************************** private void btnSearch_Click(object sender, System.EventArgs e) { OleDbDataReader myReader=null; LocalConn.Open(); myReader = Common_DB.DataSelect("select * from AddrBook where name like '%"+txtSearchName.Text +"%'",LocalConn); if (myReader != null) { DataLoad(myReader); myReader.Close(); } LocalConn.Close(); } } } ------------------------- 2. CodeFile1.cs ------------------------- using System; using System.Data; using System.Data.OleDb; using System.Data.SqlTypes; using System.Windows.Forms; public class Common_DB { //----------------------------------------------------------------------------- // DataBase Connection //----------------------------------------------------------------------------- public static OleDbConnection DBConnection() { OleDbConnection Conn; //아래는 오라클용 접속 문자열, data source 애는 tnsnames.ora 파일에 있는 Alias명을 넣으면 됩니다. string ConStr = ("Provider=MSDAORA;data source=\\printserver;User ID=scott;Password=tiger"); Conn = new OleDbConnection(ConStr); return Conn; } //----------------------------------------------------------------------------- // DataSelect //----------------------------------------------------------------------------- public static OleDbDataReader DataSelect(string sql, OleDbConnection Conn) { try { OleDbCommand myCommand = new OleDbCommand(sql, Conn); return myCommand.ExecuteReader(); } catch(Exception ex) { //Log File에 출력 MessageBox.Show(sql + "\n" + ex.Message, "DataSelect"); return null; } finally { } } //----------------------------------------------------------------------------- // DataDelete, DataInsert //----------------------------------------------------------------------------- public static bool DataManupulation(string sql, OleDbConnection Conn) { try { OleDbCommand myCommand = new OleDbCommand(sql, Conn); myCommand.ExecuteNonQuery(); return true; } catch(Exception ex) { //Log File에 출력 MessageBox.Show(sql + "\n" + ex.Message, "DataManupulation"); return false; } finally { } } /* * * 실습용 Table Script create table AddrBook ( name varchar2(20) not null primary key, sex varchar2(2) not null constraint ck_sex check (sex in ('M','F')), addr varchar2(50), tel varchar2(20) not null ) * * */ }