목차
Introduction = 15
Part 1. ADO.NET 시작하기
Chapter 1. ADO.NET 개요 = 21
왜 새로운 객체 모델인가? = 22
ADO.NET 객체 모델 = 24
.NET 데이터 공급자(Data Provider) = 25
왜 클래스와 라이브러리를 구분하여 사용하는가? = 28
이 책에서 다루는 .NET 데이터 공급자의 범위 = 29
연결된 객체들(connected objects) = 30
연결되지 않은 객체들(disconneted objects) = 34
메타데이터(metadata) = 42
강력한 형식(strongly typed)의 DataSet 객체 = 43
흔히 할 수 있는 질문들(FAQ) = 45
Chapter 2. 데이터 폼 마법사를 사용하여 ADO.NET 애플리케이션 만들기 = 47
누구나 좋아하는 데모 = 48
데이터-바운드 폼을 만들기 위해 데이터 폼 마법사 사용하기 = 49
연결 선택 = 51
데이터베이스에서 테이블 선택 = 55
DataSet에 관계 만들기 = 55
표시할 열 선택 = 56
표시 스타일 선택 = 58
새 데이터-바운드 폼 사용하기 = 59
새 데이터-바운드 폼에 데이터 보여주기 = 60
DataRelation 객체로 단계적으로 변경시키기 = 62
데이터베이스에 변경 반영 = 62
구성 요소 트레이(component tray) = 67
시작점으로서의 데이터 폼 마법사 = 69
흔히 할 수 있는 질문들(FAQ) = 69
Part 2. .NET 데이터 공급자를 사용하여 연결 얻기
Chapter 3. 데이터베이스에 연결하기 = 73
connection 객체 사용하기 = 74
connection 객체 생성하기 = 78
연결 문자열 = 80
연결을 열고 닫기 = 86
연결 풀링(connection pooling) = 87
연결 파괴(Destroying Connection) = 90
다른 객체를 생성하기 위해 Connection 객체 사용하기 = 91
데이터베이스 스키마 정보 가져오기 = 94
Visual Studio .NET 디자인 타임 기능 = 97
서버 탐색기에서 연결 사용하기 = 97
서버 탐색기에 데이터 연결 추가 = 99
애플리케이션에 연결 추가하기 = 102
런타임에 새 connection 사용하기 = 104
코드는 어디에? = 105
OleDbConnection 객체 참조 = 107
OleDbConnection 객체의 속성 = 107
OleDbConnection 객체의 메서드 = 112
OleDbConnection 객체의 이벤트 = 120
흔히 할 수 있는 질문들(FAQ) = 124
Chapter 4. 데이터베이스에 쿼리하기 = 127
코드에서 command 객체 사용하기 = 128
command 객체 만들기 = 128
행을 리턴하지 않는 쿼리 실행하기 = 129
쿼리 결과를 검토하기 위하여 DataReader 객체 사용하기 = 133
단일 값을 리턴하는 쿼리 실행하기 = 143
매개 변수화된 쿼리 실행하기 = 145
저장 프로시저 호출하기 = 147
출력 매개 변수로 데이터 가져오기 = 149
트랜잭션 내에서 쿼리 실행하기 = 152
Visual Studio .NET에서 명령 만들기 = 153
도구 상자에서 드래그 앤 드롭 = 153
연결 지정하기 = 154
쿼리 작성기 사용하기 = 155
코드에서 새 Command 객체 사용하기 = 156
서버 탐색기에서 드래그 앤 드롭 = 158
Command, DataReader, Parameter 객체 참조 = 160
OleDbConnection 객체의 속성 = 160
OleDbConnection 객체의 메서드 = 164
OleDbDataReader 객체의 속성 = 169
OleDbDataReader 객체의 메서드 = 171
Parameter 객체 만들기 = 177
OleDbParameter 객체의 속성 = 177
흔히 할 수 있는 질문들(FAQ) = 181
Cahpter 5. DataAdapter 객체를 사용하여 데이터 가져오기 = 195
DataAdapter 객체란? = 197
DataAdapter 객체는 다른 쿼리 객체들과 어떻게 다른가? = 197
DataAdapter 분석 = 200
DataAdapter 객체 생성과 사용 = 204
DataAdapter 생성 = 204
쿼리에서 결과 가져오기 = 206
쿼리 결과를 DataSet에 매핑하기 = 213
배치 쿼리 사용하기 = 216
저장 프로시저에서 행 가져오기 = 218
스키마 정보 가져오기 = 219
Visual Studio .NET에서 DataAdapter 객체 만들기 = 220
도구 상자에서 DataAdapter를 드래그 앤 드롭 = 220
데이터 어댑터 구성 마법사 사용하기 = 221
서버 탐색기에서 드래그 앤 드롭 = 225
DataAdapter의 결과 미리 보기 = 226
마법사가 생성한 코드 살펴보기 = 227
DataAdapter 참조 = 228
DataAdapter 객체의 속성 = 228
DataAdapter 객체의 메서드 = 234
DataAdapter 객체의 이벤트 = 242
흔히 할 수 있는 질문들(FAQ) = 246
Part 3. 오프라인 데이터 - ADO.NET DataSet 사용하기
Chapter 6. DataSet 객체 사용하기 = 251
DataSet 객체의 기능 = 252
연결되지 않은 데이터 사용하기 = 252
스크롤, 정렬, 검색, 필터링 = 253
계층적 데이터 사용하기 = 253
변경 캐시 = 254
XML 통합 = 254
동일한 기능 = 254
DataSet 객체 사용하기 = 255
DataSet 객체 만들기 = 255
DataAdapter.Fill 메서드 호출로 만들어지는 구조 검토하기 = 256
DataAdapter가 리턴하는 데이터 검토하기 = 258
DataSet의 데이터 검증 = 262
코드에서 DataTable 개게 만들기 = 267
DataTable 내용 수정하기 = 285
Visual Studio .NET에서 DataSet 객체 사용하기 = 299
DataAdapter 객체에서 DataSet 생성하기 = 299
스크래치(scratch)에서 새 DataSet 만들기 = 302
형식화되지 않은 DataSet 만들기 = 306
ForeignKeyConstraint 객체 참조 = 310
DataSet 객체의 속성 = 310
DataSet 객체의 메서드 = 315
DataSet 개게의 이벤트 = 320
DataTable 객체의 속성 = 320
DataTable 객체의 메서드 = 327
DataTable 객체의 이벤트 = 332
DataColumn 객체의 속성 = 333
DataRow 객체의 속성 = 342
DataRow 객체의 메서드 = 344
UniqueConstraint 객체의 속성 = 352
ForeignKeyConstraint 객체의 속성 = 354
흔히 할 수 있는 질문들(FAQ) = 356
Chapter 7. 관계형 데이터 사용하기 = 359
관계형 데이터 액세스의 간략한 개요 = 361
조일(Join) 쿼리 = 361
개별 쿼리 = 362
계층적 ADO Recordset 객체 = 363
ADO.NET DataRelation 객체 = 364
코드에서 DataRelation 객체 사용하기 = 365
DataRelation 객체 만들기 = 366
관련된 데이터 찾기 = 369
데이터를 검증하기 위해 DataRelationship 객체 사용하기 = 373
자기-참조(self-referencing) DataRelationship 객체 = 378
다대다 관계 = 380
식-기반 DataColumn 객체에 있는 DataRelation 객체 사용하기 = 384
단계적 변경(cascading changes) = 387
조인 쿼리에서 떠나라! = 388
Visual Studio .NET에서 DataRelation 객체 만들기 = 389
강력한 형식의 DataSet에 DataRdlation 추가하기 = 389
형식화되지 않은 DataSet에 DataRdlation 추가하기 = 391
DataRelation 객체 참조 = 391
DataRelation 객체의 속성 = 392
흔히 할 수 있는 질문들(FAQ) = 395
Chapter 8. 정렬, 검색 필터링 = 401
DataTable 객체의 검색과 필터링 기능 사용하기 = 402
기본 키 값으로 행 검색 = 402
좀더 동적으로 검색 처리 = 405
와일드카드(wildcard) 검색 처리 = 406
구분자(Delimiters) 사용하기 = 407
추가 Select 메서드 사용하기 = 410
DataView 객체란? = 412
DataView 객체는 DataTable에서 데이터를 리턴한다 = 413
DataView 객체는 SQL 쿼리가 아니다 = 413
코드에서 Dataiew 객체 사용하기 = 414
DataView 객체 만들기 = 414
RowStateFilter 속성 사용하기 = 416
DataRowView 객체 사용하기 = 416
DataView를 통해 사용할 수 있는 모든 데이터 행 검토하기 = 417
DataView에 있는 데이터 검색 = 419
DataRowView 객체 수정하기 = 422
Visual Studio .NET에서 DataView 객체 만들기 = 424
디자이너에 새 DataView 추가하기 = 424
DataView 객체의 속성 설정하기 = 424
DataView 객체 참조 = 425
DataView 객체의 속성 = 425
DataView 객체의 메서드 = 429
Dataiew 객체의 ListChanged 이벤트 = 434
DataRowView 객체의 속성 = 435
DataRowiew 객체의 메서드 = 437
흔히 할 수 있는 질문들(FAQ) = 439
Chapter 9. 강력한 형식의 DataSet 객체 사용하기 = 445
강력한 형식의 DataSet 객체 만들기 = 447
힘든 방법 = 447
편안한 방법 = 450
강력한 형식의 DataSet 객체 사용하기 = 453
행 추가하기 = 453
행 검색하기 = 456
행 편집하기 = 457
Null 데이터 사용하기 = 458
계층적 데이터 사용하기 = 460
다른 DataSet, DataTable, DataRow의 기능 = 461
언제 강력한 형식의 DataSet 객체를 사용하는가? = 462
소프트웨어 구성 요소과 스위스 아미 나이프(Swiss Army Knives) = 462
디자인 타임 이점 = 463
런타임 이점 = 464
추가 고려사항 = 467
방향 정하기 = 471
흔히 할 수 있는 질문들(FAQ) = 472
Chapter 10. 데이터베이스에 업데이트 반영하기 = 475
역사 수업 = 479
ADO Recordset 객체를 사용하여 업데이트를 반영하는 것의 장점 = 481
ADO Recordset 객체를 사용하여 업데이트를 반영하는 것의 단점 = 481
업데이트를 반영하기 위해 ADO.NET Command 객체 사용하기 = 483
업데이트를 반영하기 위해 ADO.NET DataAdapter 객체 사용하기 = 496
DataAdapter 객체를 수동으로 설정하기 = 496
바인드한 매개 변수 소개 = 497
업데이트를 반영하기 위해 저장 프로시저 사용하기 = 502
자신의 업데이트 로직 제공하기 = 510
업데이트 로직을 생성하기 위해 CommandBuilder 객체 사용하기 = 511
CommandBuilder가 업데이트로 로직을 생성하는 방법 = 512
CommandBuilder 사용의 장점과 단점 = 514
업데이트 로직을 생성하기 위해 데이터 어댑터 구성 마법사 사용하기 = 515
DataAdapter의 구조 검토하기 = 516
업데이트 로직을 생성하기 위한 옵션 = 517
업데이트를 반영하기 위해 저장 프로시저 사용하기 = 518
마법사 사용의 장점과 단점 = 521
업데이트 시 고려해야 할 다른 것들 = 522
낙관적 동시성(optimistic concurrency) 옵션 = 522
Null 값 사용하기 = 527
트랜잭션 내에서 업데이트 반영 = 529
TableMappings 컬렉션 사용하기 = 534
업데이트를 위한 최선의 방법 = 537
OleDbCommandBuilder 객체 참조 = 438
OleDbCommandBuilder 객체의 속성 = 539
OleDbCommandBuilder 객체의 메서드 = 540
흔히 할 수 있는 질문들(FAQ) = 542
Chapter 11. 고급 업데이트 시나리오 = 551
업데이트 반영 후에 행 새로 고침 = 553
업데이트 반영 후에 새로 생성된 타임스탬프 열 값 가져오기 = 554
업데이트 반영 후에 데이터를 가져오기 위해 배치 쿼리 사용하기 = 554
출력 매개 변수를 사용하여 새 데이터 가져오기 = 556
업데이트 반영 후에 데이터를 가져오기 위해 DataAdapter 객체의 RowUpdated 이벤트 사용하기 = 557
타임스탬프 샘플 애플리케이션 = 560
새로 생성된 자동 증분값 가져오기 = 560
SQL Server 사용 = 561
Access 2000 사용 = 565
Oracle 시퀀스(sequenes) 사용 = 565
자동 증분값을 가져오는 샘플 애플리케이션 = 569
SQL Server의 NOCOUNT 설정 사용하기 = 570
계층적 변경 반영하기 = 573
지연 삽입과 지연 삭제 반영하기 = 573
자동 증분값과 관계형 데이터 사용하기 = 577
변경 격리(isolating)와 재통합(reintegrating) = 580
GetChanges 메서드를 사용하여 대역폭 줄이기 = 580
실패한 업데이트 시도를 세련되게 처리하기 = 593
충돌에 대한 사전 계획 = 594
사용자에게 실패 통보 = 595
충돌하는 행의 현재 내용 가져오기 = 597
만약 처음에 성공하지 못하였다면… = 599
Conflicts 샘플 애플리케이션 = 600
분산 트랜잭션 사용하기 = 601
트랜잭션 코디네이터와 리소스 관리자 = 603
.NET Framework에서 분산 트랜잭션 = 604
분산 트랜잭션을 위한 데이터베이스 지원 = 605
구성 요소 만들기 = 605
분산 트랜잭션 샘플 애플리케이션 = 610
구성 요소 서비스 사용의 다른 장점 = 611
고급 업데이트 시나리오를 처리할 때, ADO.NET을 사용하라 = 611
흔히 할 수 있는 질문들(FAQ) = 612
chapter 12. XML 데이터 사용하기 = 615
XML과 데이터 액세스간의 격차 줄이기 = 616
XML 데이터 읽기와 쓰기 = 617
DataSet 객체의 XML 메서드 = 617
스키마 추론(inferring schemas) = 622
XML 문서의 스키마에 영향을 미치는 ADO.NET 속성들 = 623
변경 캐시와 XML 문서 = 625
DataSet + XmlDocument = XmlDataDocument = 627
XmlDataDocument 객체 사용하기 = 628
DataSet 객체를 XML 문서처럼 액세스하기 = 628
XML 문서에 업데이트 캐시하기 = 630
SQL Server 2000에서 XML 데이터 가져오기 = 633
SELECT … FOR XML 쿼리 사용하기 = 633
SQL XML .NET 데이터 공급자 = 638
데이터를 로드하여 XmlDocument에 넣기 위해 SqlCommand 사용하기 = 639
데이터를 로드하여 DataSet에 넣기 위해 SqlXmlAdapter 사용하기 = 642
템플릿 쿼리(template queries) 사용하기 = 643
XPath 쿼리 사용하기 = 648
XSLT 변환 적용하기 = 651
업데이트 반영 = 651
간단한 ADO.NET과 XML 샘플 = 657
두 갈래 길과 하나의 목적지 = 658
ADO.NET과 XML : 행복한 커플 = 659
흔히 할 수 있는 질문들(FAQ) = 659
Part 4. ADO.NET을 사용하여 효율적인 애플리케이션 만들기
Chapter 13. 효율적인 윈도우 기반 애플리케이션 만들기 = 665
데이터 바인딩을 사용하여 사용자 인터페이스를 빨리 만들기 = 666
1단계 : DataAdapter와 DataSet 만들기 = 668
2단계 : TextBox 바인드 추가하기 = 669
3단계 : 데이터 가져오기 = 671
4단계 : 탐색(navigation) 버튼 추가하기 = 672
5단계 : Add와 Delete 버튼 추가하기 = 676
6단계 : 변경 반영하기 = 677
7단계 : Edit, Update, Cancel 버튼 추가하기 = 679
8단계 : 자식 데이터 보기 = 681
9단계 : 동일한 데이터 소스에 두 번째 폼 바인딩하기 = 687
10단계 : 사용자 인터페이스 개선하기 = 690
11단계 : 만약 무언가를 하려 한다면 바로… = 695
데이터 바인딩 요약 = 696
애플리케이션 설계 고려사항 = 696
필요한 데이터만 가져오기 = 696
업데이트 전략 = 697
연결 전략 = 701
BLOB 데이터 사용하기 = 703
ADO.NET의 능력으로 사용자 인터페이스 만들기 = 710
흔히 할 수 있는 질문들(FAQ) = 711
Chapter 14. 효율적인 웹 애플리케이션 만들기 = 715
웹 애플리케이션에 대한 간단한 소개 = 716
ASP.NET은 웹 애플리케이션을 쉽게 만들 수 있게 한다 = 716
상태가 없는 것의 좋은 점과 나쁜 점 = 717
데이터베이스에 연결하기 = 718
트러스트된 연결(trusted connection) 사용하기 = 718
Access 데이터베이스 사용하기 = 720
웹 페이지에 데이터 표시하기 = 721
DataBinder.Eval 사용하기 = 722
DataGrid 컨트롤을 쿼리 결과에 바인딩 = 725
라운드-트립 사이에 데이터 캐시하기 = 727
상태가 없는(stateless) 방법 - 상태를 유지하지 않는다 = 728
클라이언트에서 데이터 캐싱 = 728
웹 서버에 상태 유지하기 = 732
데이터베이스에 상태 유지하기 = 735
상태 유지를 위한 가이드라인 = 736
페이징(paging) = 737
웹 DataGrid의 페이징 기능 = 738
DataAdapter Fill 메서드의 페이징 기능 = 741
한 페이지의 데이터를 리턴하는 쿼리 작성하기 = 742
pagingOptions 샘플 = 744
웹 페이지에 있는 데이터 편집하기 = 744
데이터 편집을 간단히 하기 위해 DataGrid 사용하기 = 745
DataGrid의 편집 이벤트 처리하기 = 746
데이터베이스에 변경 반영하기 = 747
ShoppingCart 샘플 = 748
흔히 할 수 있는 질문들(FAQ) = 749
Part 5. Appendix
Appendix A. 다른 .NET 데이터 공급자 사용하기 = 757
SQL Client .NET 데이터 공급자 = 758
명명된 매개 변수 vs 매개 변수 표시자 = 758
SqlConnection을 사용하여 SQL Server 데이터베이스에 연결하기 = 759
SqlAdapter를 사용하여 쿼리 결과 가져오기 = 760
SqlCommand와 SqlDataReader 객체 사용하기 = 761
GetSql〈데이터 타입〉 메서드와 SqlTypes 네임스페이스 = 763
저장 프로시저 호출하기 = 765
데이터베이스 스키마 정보 가져오기 = 766
ODBC .NET 데이터 공급자 = 768
OdbcConnection을 사용하여 데이터베이스에 연결하기 = 769
매개 변수화된 쿼리 사용하기 = 770
OdbcDataAdapter를 사용하여 쿼리 결과 가져오기 = 770
OdbcDataReader를 사용하여 쿼리 결과 검토하기 = 771
저장 프로시저 호출하기 = 772
데이터베이스 스키마 정보 가져오기 = 774
Oracle Client .NET 데이터 공급자 = 774
OracleConnection을 사용하여 Oracle 데이터베이스에 연결하기 = 775
매개 변수화된 쿼리 사용하기 = 776
OracleDataAdapter를 사용하여 쿼리 결과 가져오기 = 776
OracleDataReader를 사용하여 쿼리 결과 검토하기 = 777
Oracle-특정 데이터 타입 = 778
저장 프로시저 호출하기 = 779
Oracle REF 커서에서 데이터 가져오기 = 781
데이터베이스 스키마 정보 가져오기 = 783
일반적인 교차-공급자(Cross-Provider)에 관하여 = 783
공급자-이식 가능한(Provider-Portable) 코드 작성하기 = 783
정확한 .NET 공급자 데이터 타입 알아내기 = 788
Appendix B. 툴들 = 793
ADO.NET Ad Hoc Query Tool = 794
데이터베이스에 연결하기 = 795
.NET 데이터 공급자 추가하기 = 795
쿼리 실행하기 = 796
쿼리 스키마 정보 보기 = 797
변경 반영하기 = 800
애플리케이션 설정 = 800
ADO.NET DataAdapter Builder = 800
업데이트 로직 지정하기 = 801
ADO.NET Navigation Control = 803
visual Studio .NET 도구 상자에 ADO.NET Navigation Control 추가하기 = 804
ADO.NET Navigation Control의 데이터 속성 설정하기 = 805
ADO.NET Navigation Control의 나머지 속성 설정하기 = 806
Index = 807