목차
소개 ... 20
PART 1. ADO.NET 시작하기
Chapter 1. ADO.NET 시작하기 ... 27
기본적인 연결성 ... 28
ADO.NET 객체 모델 ... 28
데이터 공급자(Data Providers) ... 29
DataSets ... 30
Windows Form 단순 데이터 바인딩하기 ... 32
폼에 Connection과 DataAdapter 추가하기 ... 33
Windows Form에 Connection 추가하기 ... 33
DataSet 생성하기 ... 39
DataSet 생성 ... 39
컨트롤(Controls)을 DataSet에 단순 바인딩하기 ... 41
컨트롤의 Text 속성을 DataSet에 바인딩하기 ... 41
DataSet에 데이터 로딩하기 ... 43
DataSet에 데이터 로드하기 ... 43
Visual Basic .NET ... 43
Visual C .NET ... 44
PART 2. 데이터 공급자(Data Providers)
Chapter 2. Connection 생성하기 ... 49
Connection의 이해 ... 50
Connection 생성하기 ... 51
디자인 타임 연결 ... 51
서버 탐색기에 디자인 타임 연결 추가하기 ... 51
디자인 타임 연결 인스턴스를 폼에 추가하기 ... 55
런 타임에 데이터 연결 생성하기 ... 56
코드에서 Connection 객체 생성하기 ... 57
Visual Basic .NET ... 57
Visual C .NET ... 57
Connection 속성 사용하기 ... 57
ConnectionString 속성 ... 59
ConnectionString 속성 설정하기 ... 60
ConnectionString 속성 설정 ... 60
Visual Basic .NET ... 60
Visual C .NET ... 61
다른 Connection 속성 사용하기 ... 61
매개 변수 생성 ... 62
Visual Basic .NET ... 62
Visual C .NET ... 63
폼 컨트롤에 Connection 속성 바인딩하기 ... 63
폼 컨트롤에 Connection 속성 바인딩 ... 64
Visual Basic .NET ... 64
Visual C .NET ... 64
Connection 메서드 ... 65
연결 열기와 닫기 ... 66
Connection 열고 닫기 ... 67
Visual Basic .NET ... 67
Visual C .NET ... 68
Connection 이벤트 다루기 ... 69
StateChange 이벤트 ... 69
StateChange Event에 반응하기 ... 70
Visual Basic .NET ... 70
Visual C .NET ... 71
InfoMessage 이벤트 ... 71
Chapter 3. Data Command와 DataReader ... 73
Data Command와 DataReader 이해 ... 74
Data Command 생성하기 ... 74
Visual Studio에서 Data Command 생성하기 ... 75
디자인 타임 시에 폼에 Data Command 추가하기 ... 75
런 타임에 Data Command 생성하기 ... 76
런 타임에 Command 객체 생성하기 ... 77
Visual Basic .NET ... 77
Visual C .NET ... 78
Command 속성 ... 78
디자인 타임에 Command 속성 설정하기 ... 81
Visual Studio에서 Command 속성 설정하기 ... 81
런 타임에 Command 속성 설정하기 ... 83
런 타임에 Command 속성 설정 ... 83
Visual Basic .NET ... 83
Visual C .NET ... 84
Parameters 컬렉션 사용하기 ... 84
Visual Studio에서 구성된 피라미터 컬렉션 ... 85
런 타임에 피라미터 추가하고 구성하기 ... 87
Visual Basic .NET ... 87
Visual C .NET ... 87
피라미터 값 설정하기 ... 88
Visual Basic .NET ... 88
Visual C .NET ... 88
Command 메서드 ... 89
Command 실행하기 ... 91
Visual Basic .NET ... 91
Visual C .NET ... 91
DataReaders ... 92
결과를 리턴하기 위해 DataReader 생성하기 ... 94
Visual Basic .NET ... 94
Visual C .NET ... 97
Chapter 4. DataAdapter ... 103
DataAdapter 이해 ... 104
DataAdapter 생성 ... 105
서버 탐색기 사용 ... 105
서버 탐색기에서 DataAdapter 생성하기 ... 105
도구 상자의 이용 ... 107
도구 상자를 이용한 DataAdapter 생성 ... 107
런 타임에 DataAdapter 생성하기 ... 108
코드로 DataAdapter 생성하기 ... 108
Visual Basic .NET ... 108
Visual C .NET ... 109
결과 미리 보기 ... 109
DataAdapter의 결과 미리 보기 ... 110
DataAdapter의 속성 ... 111
DataAdapter Commands ... 113
속성 창에서 CommandText 설정하기 ... 114
코드로 CommandText 설정하기 ... 116
Visual Basic .NET ... 116
Visual C .NET ... 116
TableMappings 컬렉션 ... 116
[테이블 매핑] 대화 상자를 이용한 DataSet 열 이름 변경 ... 117
DataAdapter 메서드 ... 119
DataSet 생성과 데이터 바인딩 ... 119
DataSet 생성과 바인드 ... 120
Fill 메서드 ... 123
Fill 메서드의 사용 ... 125
Visual Basic .NET ... 125
Visual C .NET ... 127
Update 메서드 ... 128
Update 메서드를 사용해 데이터 소스 갱신하기 ... 129
Visual Basic .NET ... 129
Visual C .NET ... 130
DataAdapter 이벤트 처리 ... 131
OnRowUpdating 이벤트 ... 132
OnRowUpdating 이벤트에 대해 응답하기 ... 133
Visual Basic .NET ... 133
Visual C .NET ... 135
RowUpdatingEventArgs 속성 예제 ... 137
Visual Basic .NET ... 137
Visual C .NET ... 138
OnRowUpdated 이벤트 ... 138
OnRowUpdated 이벤트에 대해 응답하기 ... 139
Visual Basic .NET ... 139
Visual C .NET ... 140
RowUpdatedEventArgs 속성 예제 ... 142
Visual Basic .NET ... 142
Visual C .NET ... 143
Chapter 5. ADO.NET의 트랜잭션 처리 ... 145
트랜잭션의 이해 ... 146
트랜잭션 생성하기 ... 146
트랜잭션 만들기 ... 147
새 트랜잭션 만들기 ... 148
Visual Basic .NET ... 148
Visual C .NET ... 151
중첩 트랜잭션 만들기 ... 154
중첩된 트랜잭션 만들기 ... 155
Visual Basic .NET ... 155
Visual C .NET ... 156
트랜잭션 사용하기 ... 157
명령에 트랜잭션 할당하기 ... 158
트랜잭션의 커밋과 롤백 ... 158
트랜잭션 커밋하기 ... 158
Visual Basic .NET ... 158
Visual C .NET ... 160
트랜잭션 롤백하기 ... 161
Visual Basic .NET ... 161
Visual C .NET ... 164
PART 3. 데이터 처리
Chapter 6. DataSet ... 169
DataSet의 이해 ... 170
DataSet 만들기 ... 171
Typed DataSet 만들기 ... 172
구성 요소 디자이너를 이용해 Typed DataSet 만들기 ... 172
이미 존재하는 Typed DataSet에 DataTable 추가하기 ... 174
Untyped DataSet 만들기 ... 176
Visual Studio를 사용하여 Untyped DataSet 만들기 ... 176
런 타임에 Untyped DataSet 만들기 ... 178
Visual Basic .NET ... 178
Visual C .NET ... 178
DataSet의 속성 ... 179
DataSet의 Tables 컬렉션 ... 180
Visual Studio를 사용해 Untyped DataSet에 DataTable 추가하기 ... 180
런 타임에 Untyped DataSet으로 DataTable 추가하기 ... 187
Visual Basic .NET ... 187
Visual C .NET ... 189
DataSet 관계(DataSet Relations) ... 191
Visual Studio를 사용해 Untyped DataSet에 데이터 관계(DataRelation) 추가하기 ... 191
런 타임 시 DataSet에 DataRelation 추가하기 ... 194
Visual Basic .NET ... 194
Visual C .NET ... 195
DataSet 메서드 ... 197
DataSet 복제하기(Cloning) ... 198
DataSet 복제 ... 198
Visual Basic .NET ... 198
Visual C .NET ... 199
DataSet 복사하기(Copy) ... 200
Visual Basic .NET ... 200
Visual C .NET ... 201
Chapter 7. Data Table ... 205
Data Table의 이해 ... 206
Data Table 만들기 ... 206
독립적 Data Table 만들기 ... 207
런 타임에 독립적 Data Table 객체 생성하기 ... 207
Visual Basic .NET ... 207
Visual C .NET ... 210
DataSet 테이블 만들기 ... 212
Tables.Add 메서드를 사용해 DataTable 만들기 ... 213
Visual Basic .NET ... 213
Visual C .NET ... 214
DataTable의 속성 ... 215
DataTable 속성 사용하기 ... 216
DataAdapter의 FillSchema 메서드를 사용하여 PrimaryKey 제약 조건 추가하기 ... 217
Visual Basic .NET ... 217
Visual C .NET ... 218
Columns 컬렉션 ... 219
계산된 열 만들기 ... 221
Visual Basic .NET ... 221
Visual C .NET ... 223
Rows ... 225
Rows 컬렉션에 새 열 추가하기 ... 226
Visual Basic .NET ... 226
Visual C .NET ... 227
행의 상태 디스플레이하기 ... 229
Visual Basic .NET ... 229
Visual C .NET ... 230
Constraints ... 231
ForeignKeyConstraint 추가하기 ... 233
Visual Basic .NET ... 233
Visual C .NET ... 234
UniqueConstraint 추가하기 ... 236
Visual Basic .NET ... 236
Visual C .NET ... 237
DataTable 메서드 ... 238
Select 메서드 ... 239
Select 메서드를 사용해서 행의 부분 집합 디스플레이하기 ... 240
Visual Basic .NET ... 240
Visual C .NET ... 241
DataRow의 메서드 ... 242
GetChildRows 메서드를 사용해 데이터 가져오기 ... 243
Visual Basic .NET ... 243
Visual C .NET ... 245
DataTable의 이벤트 ... 246
Chapter 8. DataView ... 249
DataView의 이해 ... 250
DataView 만들기 ... 251
Visual Studio 이용하기 ... 252
Visual Studio 이용해 DataView를 만들고 바인드하기 ... 252
런 타임에 DataView 만들기 ... 254
런 타임에 DataView 생성 ... 255
Visual Basic .NET ... 255
Visual C .NET ... 256
DataView 속성들 ... 257
DataColumn 표현식 ... 258
정렬 표현식 ... 262
정렬 방법 바꾸기 ... 263
Visual Basic .NET ... 263
Visual C .NET ... 264
RowStateFilter ... 265
추가된 행들만 디스플레이하기 ... 266
Visual Basic .NET ... 266
Visual C .NET ... 267
DataView의 메서드 ... 269
Find 메서드 ... 269
기본 키 값을 이용해 행 찾기 ... 269
Visual Basic .NET ... 269
Visual C .NET ... 270
PART 4. ADO.NET 객체의 사용
Chapter 9. 데이터의 편집 및 갱신 ... 275
데이터 편집과 갱신 이해 ... 276
DataRow 상태와 버전 ... 277
RowState 속성 ... 277
행 버전 ... 279
DataRow 상태와 버전 조사 ... 280
DataSet의 데이터 편집하기 ... 282
DataRow 추가 ... 283
DataTable에 행 추가하기 ... 283
Visual Basic .NET ... 283
Visual C .NET ... 284
DataRow 삭제 ... 285
Delete 메서드를 사용하여 DataRow 삭제하기 ... 286
Visual Basic .NET ... 286
Visual C .NET ... 287
DataRow 값의 변경 ... 288
DataRow 값 변경하기 ... 289
Visual Basic .NET ... 289
Visual C .NET ... 290
DataRow 값의 지연 변경 ... 291
열 변경 지연을 위해 BeginEdit 사용하기 ... 291
Visual Basic .NET ... 291
Visual C .NET ... 293
데이터 소스 갱신 ... 294
DataAdapter의 Update 메서드 사용 ... 295
데이터 소스 갱신하기 ... 296
Visual Basic .NET ... 296
Visual C .NET ... 297
Command 객체 실행 ... 298
Data Command를 사용하여 데이터 소스 갱신하기 ... 299
Visual Basic .NET ... 299
Visual C .NET ... 301
DataSet 변경의 승인(Accept)과 거부(Reject) ... 303
AcceptChanges의 사용 ... 304
DataSet의 변경 승인 ... 304
Visual Basic .NET ... 304
Visual C .NET ... 307
RejectChanges 사용 ... 309
DataSet의 변경 거부 ... 310
Visual Basic .NET ... 310
Visual C .NET ... 311
Chapter 10. Windows Forms에서의 ADO.NET 데이터 바인딩 ... 315
Windows Forms에서의 데이터 바인딩 이해 ... 316
ADO.NET 데이터 소스와 컨트롤의 바인딩 ... 318
단순-바인딩 컨트롤 속성 ... 318
속성 창을 이용하여 속성을 바인드하기 ... 319
고급 데이터 바인딩 대화 상자를 이용하여 속성을 바인드하기 ... 320
런타임 시에 속성 바인드 ... 322
Visual Basic .NET ... 322
Visual C .NET ... 324
복잡-바인딩 컨트롤 속성 ... 327
속성 창을 사용하여 복잡 데이터-바인딩하기 ... 328
런 타임에 복잡 데이터-바인딩하기 ... 329
Visual Basic .NET ... 329
Visual C .NET ... 331
BindingContext 객체 사용 ... 332
CurrencyManager 객체 사용 ... 333
CurrencyManager 속성 ... 333
CurrencyManager의 읽기 전용 속성 사용하기 ... 334
Visual Basic .NET ... 334
Visual C .NET ... 336
Position 속성 사용하기 ... 338
Visual Basic .NET ... 338
Visual C .NET ... 339
CurrencyManager 속성 ... 340
CurrencyManager 이벤트 ... 341
ItemChanged 이벤트 처리하기 ... 342
Visual Basic .NET ... 342
Visual C .NET ... 343
Binding 객체 사용 ... 344
Binding 객체 속성 ... 344
BindingMemberInfo 속성 사용하기 ... 346
Visual Basic .NET ... 346
Visual C .NET ... 347
Binding 객체 이벤트 ... 348
Chapter 11. Windows Forms에서의 ADO.NET 사용 ... 351
데이터 포맷팅(Formatting Data) ... 352
Format 이벤트 사용하기 ... 352
Format 이벤트를 사용하여 데이터 포맷 변경하기 ... 353
Visual Basic .NET ... 353
Visual C .NET ... 356
Parse 이벤트 사용하기 ... 359
Parse 이벤트를 사용하여 원래의 데이터 포맷으로 복귀하기 ... 359
Visual Basic .NET ... 359
Visual C .NET ... 360
윈도우 컨트롤에 데이터를 디스플레이하기 ... 362
데이터 엔트리(entry) 단순화 ... 362
Boolean 값을 나타내기 위해 체크 상자 컨트롤 사용하기 ... 363
콤보 상자 컨트롤에 전체 이름 디스플레이하기 ... 365
Visual Basic .NET ... 365
Visual C .NET ... 366
NumericUpDown 컨트롤 사용하기 ... 368
DataRelation으로 작업하기 ... 369
포함된(nested) 목록 상자 만들기 ... 369
Visual Basic .NET ... 369
Visual C .NET ... 370
데이터 그리드를 사용하여 계층적 데이터를 디스플레이하기 ... 372
트리 뷰를 사용하여 계층적 데이터 디스플레이하기 ... 377
Visual Basic .NET ... 377
Visual C .NET ... 379
데이터 검색 ... 382
정렬된 행에서 검색 ... 382
정렬된 행에서 특정 행 검색하기 ... 382
Visual Basic .NET ... 382
Visual C .NET ... 384
다른 조건으로 행 검색 ... 386
정렬되지 않은 행에서 특정 행 검색하기 ... 387
Visual Basic .NET ... 387
Visual C .NET ... 388
Windows Forms에서의 데이터 검증 ... 390
데이터 변경 이벤트 ... 390
ColumnChanging 이벤트 처리하기 ... 391
Visual Basic .NET ... 391
Visual C .NET ... 392
RowChanging 이벤트 처리하기 ... 393
Visual Basic .NET ... 393
Visual C .NET ... 394
컨트롤 검증 이벤트 ... 395
ItemChanged 이벤트 처리하기 ... 396
Visual Basic .NET ... 396
Visual C .NET ... 397
Validating 이벤트 처리하기 ... 398
Visual Basic .NET ... 398
Visual C .NET ... 399
ErrorProvider 컴포넌트 사용 ... 400
폼 컨트롤에서 ErrorProvider 컴포넌트 사용하기 ... 401
Visual Basic .NET ... 401
Visual C .NET ... 402
ErrorProvider를 DataColumn에 사용하기 ... 404
Visual Basic .NET ... 404
Visual C .NET ... 405
Chapter 12. Web Forms에서의 데이터 바인딩 ... 407
Web Forms에서의 데이터-바인딩 이해하기 ... 408
ADO.NET 데이터 소스에 컨트롤 바인딩하기 ... 410
단순-바인딩 컨트롤 속성 ... 410
디자인 타임에 컨트롤 속성을 단순-바인드하기 ... 411
런 타임에 컨트롤 속성을 단순-바인드하기 ... 414
Visual Basic .NET ... 414
Visual C .NET ... 414
페이지에 바운드 데이터 디스플레이하기 ... 415
Visual Basic .NET ... 415
Visual C .NET ... 416
복잡-바인딩 컨트롤 속성 ... 417
디자인 타임에 컨트롤 속성을 복잡-바인드하기 ... 418
런 타임에 컨트롤을 복잡-바인드하기 ... 419
Visual Basic .NET ... 419
Visual C .NET ... 420
DataBinder 객체 사용하기 ... 421
컨트롤 속성에 바인드하기 위해 DataBinder 사용하기 ... 423
Visual Basic .NET ... 423
Visual C .NET ... 424
ADO.NET 객체 상태 유지 ... 425
ADO.NET 객체 상태 유지 ... 426
DataSet을 Session 상태에 저장하기 ... 426
Visual Basic .NET ... 426
Visual C .NET ... 427
페이지에 ADO.NET 객체 유지 ... 428
DataSet을 ViewState에 저장하기 ... 429
Visual Basic .NET ... 429
Visual C .NET ... 430
Web Forms에서의 데이터 소스 갱신 ... 431
Command 객체를 사용하여 데이터 소스 갱신하기 ... 431
Visual Basic .NET ... 431
Visual C .NET ... 433
Chapter 13. Web Forms에서의 ADO.NET 사용 ... 437
템플릿 기반(Template-Based)의 웹 컨트롤 사용하기 ... 438
데이터 그리드 컨트롤 사용하기 ... 439
Web Forms에 데이터 그리드 추가하기 ... 439
데이터 그리드에 데이터-바운드 열 추가하기 ... 442
데이터 그리드에 Template 열 추가하기 ... 446
데이터 그리드에서 정렬 구현하기 ... 452
Visual Basic .NET ... 452
Visual C .NET ... 454
DataList 컨트롤 사용하기 ... 456
Web Forms에 DataList 추가하기 ... 457
선형 텍스트(Flowed Text)처럼 DataList를 디스플레이하기 ... 462
데이터 이동 ... 465
데이터 그리드 컨트롤의 기본 페이징 구현하기 ... 466
Visual Basic .NET ... 466
Visual C .NET ... 468
Web Forms에서 수동 네비게이션 구현하기 ... 471
Visual Basic .NET ... 471
Visual C .NET ... 474
Web Forms 검증 ... 478
폼에 RequiredFieldValidator 컨트롤 추가하기 ... 480
PART 5. ADO.NET과 XML
Chapter 14. XML 디자이너 사용하기 ... 487
XML 스키마 이해 ... 488
XML 스키마와 Typed DataSet 만들기 ... 489
스키마 만들기 ... 491
XML 디자이너에 스키마 추가하기 ... 491
DataSet 만들기 ... 492
XML 디자이너에 DataSet 추가하기 ... 492
스키마로 DataSet 생성하기 ... 494
스키마 속성 이해 ... 495
XML 스키마에 선언된 네임스페이스 ... 497
XML 디자이너에서 DataTable로 작업하기 ... 497
XML 디자이너에 DataTable 추가하기 ... 498
테이블 또는 뷰를 스키마에 추가하기 ... 498
스크래치로 테이블 만들기 ... 500
키(Key) 만들기 ... 503
기본 키(primary key) 만들기 ... 503
DataTable에 기본 키 추가하기 ... 503
유일 키(unique key) 만들기 ... 506
DataTable에 유일 키 추가하기 ... 506
관계(Relation) 만들기 ... 508
DataSet에 관계 추가하기 ... 508
요소로 작업하기 ... 511
요소 속성 ... 512
요소의 type 속성 정의하기 ... 514
타입으로 작업하기 ... 515
단순 타입(simple type) ... 515
Length 패싯을 사용하여 단순 타입 만들기 ... 517
복잡 타입(Complex Type) ... 519
선택 그룹을 포함하는 복잡 타입 만들기 ... 520
특성(attribute)으로 작업하기 ... 523
특성 속성 ... 523
특성 만들기 ... 524
Chapter 15. XML 읽고 쓰기 ... 527
ADO.NET과 XML 이해 ... 528
DataSet의 XML 메서드 사용하기 ... 528
GetXml과 GetXmlSchema 메서드 ... 529
GetXmlSchema를 사용하여 XML 스키마 가져오기 ... 529
Visual Basic .NET ... 529
Visual C .NET ... 531
GetXml을 사용하여 DataSet의 데이터 가져오기 ... 534
Visual Basic .NET ... 534
Visual C .NET ... 535
ReadXmlSchema 메서드 ... 536
ReadXmlSchema를 사용하여 DataSet 스키마 만들기 ... 537
Visual Basic .NET ... 537
Visual C .NET ... 539
InferXmlSchema 메서드 ... 540
XML 문서의 스키마 추론하기 ... 542
Visual Basic .NET ... 542
Visual C .NET ... 543
ReadXml 메서드 ... 544
ReadXml을 사용하여 XML 데이터 로드하기 ... 547
Visual Basic .NET ... 547
Visual C .NET ... 548
WriteXmlSchema 메서드 ... 549
WriteXmlSchema를 사용하여 XML 스키마 만들기 ... 549
Visual Basic .NET ... 549
Visual C .NET ... 551
WriteXml 메서드 ... 552
XML 포맷으로 데이터를 파일에 쓰기 ... 553
Visual Basic .NET ... 553
Visual C .NET ... 555
XML 쓰는 방법 제어하기 ... 557
DataRelation의 Nested 속성 사용하기 ... 557
관련 데이터를 계층적으로 쓰기 ... 557
Visual Basic .NET ... 557
Visual C .NET ... 559
DataColumn의 ColumnMapping 속성 사용하기 ... 560
열을 특성으로 쓰기 ... 561
Visual Basic .NET ... 561
Visual C .NET ... 563
XmlDataDocument 객체 ... 564
DataSet에 동기화되는 XML 뷰 만들기 ... 565
Visual Basic .NET ... 565
Visual C .NET ... 566
Chapter 16. .NET 프레임워크에서 ADO 사용하기 ... 569
COM 상호 호환성 이해 ... 570
.NET 프레임워크에서 ADO 사용하기 ... 572
ADO 참조하기 ... 574
ADO와 ADOX 라이브러리 참조 추가하기 ... 574
ADO 객체 생성하기 ... 576
ADO Connection 생성하기 ... 577
Visual Basic .NET ... 577
Visual C .NET ... 577
ADO Recordset에서 데이터 가져오기 ... 578
Visual Basic .NET ... 578
Visual C .NET ... 579
ADO Recordset 갱신하기 ... 581
Visual Basic .NET ... 581
Visual C .NET ... 583
.NET 프레임워크에서 ADOX 사용하기 ... 585
ADOX를 사용하여 데이터베이스 객체 만들기 ... 586
ADOX를 사용하여 데이터베이스 만들기 ... 587
Visual Basic .NET ... 587
Visual C .NET ... 588
ADOX를 사용하여 데이터베이스에 테이블 추가하기 ... 589
Visual Basic .NET ... 589
Visual C .NET ... 591
찾아보기 ... 595
닫기