Tải bản đầy đủ (.pdf) (625 trang)

Tài liệu Beginning SQL Server 2005 Express doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (9.91 MB, 625 trang )


Rick Dobson
Beginning SQL Server
2005 Express Database
Applications
with Visual Basic Express and
Visual Web Developer Express
From Novice to Professional
5238CH00_FM 11/18/05 4:29 PM Page i
Beginning SQL Server 2005 Express Database Applications
with Visual Basic Express and Visual Web Developer Express From Novice to Professional
Copyright © 2006 by Rick Dobson
All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording, or by any information storage or retrieval
system, without the prior written permission of the copyright owner and the publisher.
ISBN (pbk): 1-59059-523-8
Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1
Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence
of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark
owner, with no intention of infringement of the trademark.
Lead Editors: Tony Davis and Matthew Moodie
Technical Reviewer: Cristian Lefter
Editorial Board: Steve Anglin, Dan Appleman, Ewan Buckingham, Gary Cornell, Tony Davis, Jason Gilmore,
Jonathan Hassell, Chris Mills, Dominic Shakeshaft, Jim Sumser
Project Manager: Beth Christmas
Copy Edit Manager: Nicole LeClerc
Copy Editors: Damon Larson and Freelance Editorial Services
Assistant Production Director: Kari Brooks-Copony
Production Editor: Kelly Winquist
Compositors: Dina Quan and Diana Van Winkle, Van Winkle Design Group
Proofreader: April Eddy


Indexer: Valerie Perry
Cover Designer: Kurt Krames
Manufacturing Director: Tom Debolski
Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor,
New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail , or
visit .
For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley,
CA 94710. Phone 510-549-5930, fax 510-549-5939, e-mail , or visit .
The information in this book is distributed on an “as is” basis, without warranty. Although every precaution
has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to
any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly
by the information contained in this work.
The source code for this book is available to readers at in the Source Code section.
You will need to answer questions pertaining to this book in order to successfully download the code.
5238CH00_FM 11/18/05 4:29 PM Page ii
Contents at a Glance
About the Author
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
About the Technical Reviewer
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Acknowledgments
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Introduction
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
PART 1
■ ■ ■
Working with SQL Server Express

CHAPTER 1 Getting Started with SQL Server Express
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3


CHAPTER 2 Graphical and Command-Line Query Tools
. . . . . . . . . . . . . . . . . . . . . . . . . . . 33

CHAPTER 3 Exploring, Creating, and Recovering Databases
. . . . . . . . . . . . . . . . . . . . . . 73

CHAPTER 4 Data Types, Tables, and Constraints
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

CHAPTER 5 Creating Queries from a Single Database Object
. . . . . . . . . . . . . . . . . . . . 155

CHAPTER 6 Querying Multiple Database Objects and Manipulating Result Sets
. . . 191

CHAPTER 7 Leveraging Database Objects That Encapsulate T-SQL
. . . . . . . . . . . . . . . 247

CHAPTER 8 Managing SQL Server Express Security
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
PART 2
■ ■ ■
Working with Visual Basic Express
and Visual Web Developer Express

CHAPTER 9 Introduction to Visual Basic Express and Windows Forms
. . . . . . . . . . . . 371

CHAPTER 10 Introduction to Visual Web Developer Express,

Web Pages, and Web Forms
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409

CHAPTER 11 Programming ADO.NET
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445

CHAPTER 12 Programming DataAdapter and DataSet Objects
. . . . . . . . . . . . . . . . . . . . 485

CHAPTER 13 Using Visual Database and Form Design Tools
. . . . . . . . . . . . . . . . . . . . . . 515

INDEX
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
iii
5238CH00_FM 11/18/05 4:29 PM Page iii
5238CH00_FM 11/18/05 4:29 PM Page iv
About the Author
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
About the Technical Reviewer
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Acknowledgments
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Introduction
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
PART 1
■ ■ ■
Working with SQL Server Express

CHAPTER 1

Getting Started with SQL Server Express
. . . . . . . . . . . . . . . . . . . . . . 3
What Is SQL Server Express?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Who Is SQL Server Express For?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Hobbyists and Other Nonprofessional Developers
. . . . . . . . . . . . . . . . . . . . . 6
Business Analysts
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Database Administrators and Operations Specialists
. . . . . . . . . . . . . . . . . . 7
Professional Developers in Need of a Free, Modern Database
. . . . . . . . . . . 8
SQL Server Express vs. SQL Server 2005
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Similarities
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Differences
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
SQL Server Express vs. MSDE
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Installing SQL Server Express
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Performing a System Check for SQL Server Express
. . . . . . . . . . . . . . . . . . 12
Registration, Feature, and Instance Name Screens
. . . . . . . . . . . . . . . . . . . 13
Service Account and Authentication Mode Screens
. . . . . . . . . . . . . . . . . . . 14

Collation, Error Reporting, and Ready to Install Screens
. . . . . . . . . . . . . . . 15
Using SQL Server Express Query Tools
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Query Tools for SQL Server Express
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Configuring SQL Server Express to Start Automatically
. . . . . . . . . . . . . . . . 17
Configuring SQL Server Express for Network Access
. . . . . . . . . . . . . . . . . 19
Configuring the Windows XP Firewall for SQL Server Express
. . . . . . . . . . 21
Connecting from the SSMS-Based Query Tool
. . . . . . . . . . . . . . . . . . . . . . . 22
Connecting from Remote Down-Level Clients
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Installing Sample Databases
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Connecting to SQL Server Express from Visual Studio 2003
. . . . . . . . . . . 25
Connecting to SQL Server Express from Access Projects
. . . . . . . . . . . . . . 27
Connecting to SQL Server Express from Access Linked Tables
. . . . . . . . . 28
Summary
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
v
Contents
5238CH00_FM 11/18/05 4:29 PM Page v


CONTENTSvi

CHAPTER 2
Graphical and Command-Line Query Tools
. . . . . . . . . . . . . . . . . . 33
Using the SSMS-Based Query Tool
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Connecting to SQL Server Instances
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Using Database, Table, and View Designers
. . . . . . . . . . . . . . . . . . . . . . . . . 41
Designing, Running, Saving, and Rerunning SQL Scripts
. . . . . . . . . . . . . . 51
Using the sqlcmd Utility
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Connecting to SQL Server Instances
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Running Statements from a File
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Saving Output to a File
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Dynamically Running and Batching sqlcmd Statements
. . . . . . . . . . . . . . . 65
Summary
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

CHAPTER 3
Exploring, Creating, and Recovering Databases
. . . . . . . . . . . . . 73
Overview of Databases

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Introducing Database Concepts
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Types of Databases
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Getting Meta Data About Databases
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Using sp_helpdb for Database Help
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Using System Catalog Views
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Searching for and Copying Databases with Windows Explorer
. . . . . . . . . . 83
Using CREATE DATABASE
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Just Naming the Database
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Designating Data Files in the ON Clause
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Using the LOG ON Clause
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Attaching and Detaching Databases
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Attaching Databases with CREATE DATABASE
. . . . . . . . . . . . . . . . . . . . . . . 89
Copying Files, the Auto-Close Feature, and sp_detach_db
. . . . . . . . . . . . . 95
Backing Up and Restoring Databases
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Overview of Database Recovery Models

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Choosing and Modifying a Database’s Recovery Model
. . . . . . . . . . . . . . 101
Performing a Full Data Backup and Restore
. . . . . . . . . . . . . . . . . . . . . . . . 102
Performing Differential Backups and Restores
. . . . . . . . . . . . . . . . . . . . . . 103
Cleaning Up the Backup and Restore Scripts
. . . . . . . . . . . . . . . . . . . . . . . 106
Summary
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

CHAPTER 4
Data Types, Tables, and Constraints
. . . . . . . . . . . . . . . . . . . . . . . . . 107
Learning About Data Types
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Numbers and Dates
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Character and Binary Byte Streams
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Miscellaneous
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Creating Tables and Using Data Types
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Creating a Table with Columns
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5238CH00_FM 11/18/05 4:29 PM Page vi

CONTENTS vii

Managing Data Integrity with Basic Constraints and Column Properties
. . . . . . 128
Inserting Data for a Subset of Table Columns
. . . . . . . . . . . . . . . . . . . . . . . 128
Not Allowing Null Values in a Column
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Designating Default Column Values
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Designating a Column as a Primary Key
. . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Managing Data Integrity with Sophisticated Constraints
. . . . . . . . . . . . . . . . . . . 139
Using CHECK Constraints
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Using Multicolumn Constraints
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Using Foreign Key Constraints
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Summary
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

CHAPTER 5
Creating Queries from a Single Database Object
. . . . . . . . . . . 155
Specifying Items to Select from a Data Source
. . . . . . . . . . . . . . . . . . . . . . . . . . 155
Specifying SELECT List Items
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Using the Current Database Context or a Different Database
. . . . . . . . . . 165

Specifying Queries from Another Server Instance
. . . . . . . . . . . . . . . . . . . 168
Filtering, Grouping, and Aggregating
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Filtering for Exact and Approximate Character Matches
. . . . . . . . . . . . . . 175
Filtering for Values in a Range
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Grouping and Aggregating
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Summary
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

CHAPTER 6
Querying Multiple Database Objects
and Manipulating Result Sets
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Joining Data Sources
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Inner Joins
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Outer Joins
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Cross Joins
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Self-Joins
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Joins for More Than Two Data Sources
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Using Subqueries

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Including a Subquery in a SELECT List
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Including a Subquery in a WHERE Clause
. . . . . . . . . . . . . . . . . . . . . . . . . . 211
Including a Correlated Subquery in a WHERE Clause
. . . . . . . . . . . . . . . . . 214
Explicitly Ordering and Ranking Rows
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Controlling Row Order with the ORDER BY Clause
. . . . . . . . . . . . . . . . . . . 215
Ranking Result Set Rows
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Manipulating Result Sets
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Saving a Result Set with the INTO Clause
. . . . . . . . . . . . . . . . . . . . . . . . . . 225
Appending Result Sets to One Another . . . . . . . . . . . . . . . . . . . . . . . . . 229
Reusing Queries with Common Table Expressions . . . . . . . . . . . . . . . . 232
Converting Between Relational and Cross-Tabulated Tables . . . . . . . . . 239
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
5238CH00_FM 11/18/05 4:29 PM Page vii

CHAPTER 7
Leveraging Database Objects That Encapsulate T-SQL
. . . . 247
Creating and Using Views
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Performing Data Access with a View
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

Performing Data Modification with a View
. . . . . . . . . . . . . . . . . . . . . . . . . 252
Processing Meta Data with System Views
. . . . . . . . . . . . . . . . . . . . . . . . . 256
Creating and Using User-Defined Functions
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Creating and Using FN User-Defined Functions
. . . . . . . . . . . . . . . . . . . . . 260
Creating and Using IF User-Defined Functions
. . . . . . . . . . . . . . . . . . . . . . 263
Creating and Using Stored Procedures
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Returning Result Sets Without Parameters
. . . . . . . . . . . . . . . . . . . . . . . . . 268
Returning Result Sets and Input Parameters
. . . . . . . . . . . . . . . . . . . . . . . 271
Returning Scalar Values with Output Parameters
. . . . . . . . . . . . . . . . . . . . 278
Processing Return Status Values
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Performing Data Manipulation
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Creating and Using Triggers
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Learning to Reference Inserted and Deleted Tables
. . . . . . . . . . . . . . . . . . 293
Rolling Back in an AFTER Trigger
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Archiving Changes to a Table with Triggers
. . . . . . . . . . . . . . . . . . . . . . . . 297

Using an INSTEAD OF Trigger with a View
. . . . . . . . . . . . . . . . . . . . . . . . . . 302
Summary
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

CHAPTER 8
Managing SQL Server Express Security
. . . . . . . . . . . . . . . . . . . . . 307
Overview of Security Concepts
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Exploring and Creating Principals
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Exploring Principals
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Creating Principals
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Assigning Permissions to Principals
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Overview of Securables and Permissions
. . . . . . . . . . . . . . . . . . . . . . . . . . 325
Assigning Permissions via the Fixed Server Roles
. . . . . . . . . . . . . . . . . . . 327
Assigning Permissions via the Fixed Database Roles
. . . . . . . . . . . . . . . . 332
Granting, Denying, and Revoking Permissions
. . . . . . . . . . . . . . . . . . . . . . 339
Creating and Using Schemas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Creating and Owning Schemas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

Creating Objects in Owned Schemas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Creating Objects in Any Schema
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Using Encryption Keys and Certificates
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Encrypting Data
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
Signing Data
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Summary
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368

CONTENTSviii
5238CH00_FM 11/18/05 4:29 PM Page viii

CONTENTS ix
PART 2
■ ■ ■
Working with Visual Basic Express
and Visual Web Developer Express

CHAPTER 9
Introduction to Visual Basic Express
and Windows Forms
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Starting, Saving, and Exploring a Solution
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Starting and Saving a New Solution’s Project
. . . . . . . . . . . . . . . . . . . . . . . 371

Adding Items to a Solution
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
Exploring a Solution
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Using Visual Basic Data Types in VBE
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Data Types Are Objects
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Overview of Data Types
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
Declaring Variables and Assigning Data Type Values
. . . . . . . . . . . . . . . . . 379
Building and Testing a Windows Form Calculator
. . . . . . . . . . . . . . . . . . . . . . . . . 385
Creating a New Startup Form
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
Populating a Windows Form with Controls
. . . . . . . . . . . . . . . . . . . . . . . . . 386
Adding Button Click Event Procedures to a Form
. . . . . . . . . . . . . . . . . . . . 387
Testing the Code Behind a Form
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Handling Exceptions
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
A Form for Running Try...Catch Statements
. . . . . . . . . . . . . . . . . . . . . . . . 392
Using Try...Catch Statements Directly
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Invoking a Try...Catch Statement in a Function Procedure
. . . . . . . . . . . . 394

Dynamically Adapting to Runtime Errors
. . . . . . . . . . . . . . . . . . . . . . . . . . . 395
Using the File System
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
Design and Formatted Views of an Application Form
. . . . . . . . . . . . . . . . . 397
Exploring Folders and Viewing Files
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
Reading Fixed-Width Reports
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
Summary
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408

CHAPTER 10
Introduction to Visual Web Developer Express,
Web Pages, and Web Forms
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
ASP.NET Development Concepts
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
Starting and Exploring ASP.NET Projects
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
Starting an ASP.NET Project
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
Exploring a New ASP.NET Project
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
Creating Pages for an ASP.NET Project
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
Changing a Page by Clicking a Button
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
Returning a Formatted Date from a Calendar Control

. . . . . . . . . . . . . . . . 419
Programming a Message-for-the-Day Application
. . . . . . . . . . . . . . . . . . . 424
Creating and Linking HTML Pages
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
5238CH00_FM 11/18/05 4:29 PM Page ix
Interacting with Data
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Creating a Server-Based Website and Copying Files to It
. . . . . . . . . . . . . 429
Saying Hello Dynamically to a Web Form User
. . . . . . . . . . . . . . . . . . . . . . 431
Populating an Application Variable and Reading from It
. . . . . . . . . . . . . . 435
Summary
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442

CHAPTER 11
Programming ADO.NET
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
Overview of ADO.NET
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
ADO.NET Providers
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
ADO.NET Architecture
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
Programming Connection Objects
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
Opening and Closing a Connection to a SQL Server Database
. . . . . . . . . 448

Getting Help with Constructing a Connection String
. . . . . . . . . . . . . . . . . 450
Connecting to SQL Server Express and Access Database Files
. . . . . . . . 451
Programming Command Objects
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
Returning a Single Value with a Command Object
. . . . . . . . . . . . . . . . . . . 455
Returning Forward-Only, Read-Only Rowsets
. . . . . . . . . . . . . . . . . . . . . . . 462
Performing Data Definition and Database Maintenance
. . . . . . . . . . . . . . 471
Summary
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483

CHAPTER 12
Programming DataAdapter and DataSet Objects
. . . . . . . . . . . 485
Creating, Populating, and Using DataSet Objects
. . . . . . . . . . . . . . . . . . . . 486
Sorting and Filtering DataTables with DataViews
. . . . . . . . . . . . . . . . . . . . 493
Inserting, Updating, and Deleting Rows
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Bulk Loading Data from Excel
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
Summary
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514

CHAPTER 13

Using Visual Database and Form Design Tools
. . . . . . . . . . . . . 515
Visual Database Tools in VBE
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
Dialog Boxes for Creating Connections
. . . . . . . . . . . . . . . . . . . . . . . . . . . 516
Exploring a SQL Server Express Database
. . . . . . . . . . . . . . . . . . . . . . . . . 517
Adding Objects to a SQL Server Express Database
. . . . . . . . . . . . . . . . . 519
Migrating and Revising an MSDE Database
. . . . . . . . . . . . . . . . . . . . . . . . 522
Adding a Stored Procedure
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
Working with Data Sources and Windows Forms
. . . . . . . . . . . . . . . . . . . . . . . . 526
Creating a Data Source for the Data Sources Window
. . . . . . . . . . . . . . . 527
Dragging Data Source Items to a Windows Form
. . . . . . . . . . . . . . . . . . . 529
Modifying Control Behavior with Smart Tags
. . . . . . . . . . . . . . . . . . . . . . . 532
Creating and Using Interactive Data Displays
. . . . . . . . . . . . . . . . . . . . . . 539

CONTENTSx
5238CH00_FM 11/18/05 4:29 PM Page x
Visual Web Developer Visual Database Tools
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
Making Database Connections

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
Viewing Data and Modifying Databases
. . . . . . . . . . . . . . . . . . . . . . . . . . . 558
Displaying Data on a Web Form Page with a GridView Control
. . . . . . . . 560
Performing Lookups on a Web Form Page
. . . . . . . . . . . . . . . . . . . . . . . . . 564
Summary
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574

INDEX
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575

CONTENTS xi
5238CH00_FM 11/18/05 4:29 PM Page xi
5238CH00_FM 11/18/05 4:29 PM Page xii
xiii
About the Author

RICK DOBSON has written six books on database development with Visual
Basic .NET, SQL Server, and Microsoft Access. In the past few years, he
authored three DVDs on Visual Basic .NET, ADO.NET, and T-SQL. In addi-
tion, Rick has written countless articles for computer periodicals, including
SQL Server Magazine, Visual Studio .NET Developer, Visual Basic Developer,
SQL Server Professional, SQL Server Solutions, Inside Microsoft Visual Basic,
and Smart Access.
Rick is also the webmaster for several websites. His most popular site,
, focuses on the needs of VB .NET and SQL
Server developers, as well as Access developers. This site gets over 1 million
page views annually, and thousands of site visitors register to receive a

newsletter summarizing new developments and opportunities on the site. The site also contains
extra material related to the book, including extra examples. Rick also founded the Database Devel-
opers Group, an international association of Microsoft database developers.
5238CH00_FM 11/18/05 4:29 PM Page xiii
5238CH00_FM 11/18/05 4:29 PM Page xiv

CRISTIAN LEFTER is a SQL Server MVP, a former developer, a database
administrator, a trainer, and the CEO of MicroTraining, a consulting and
training company. In his spare time, he is a tech reviewer, author, and leader
for two user groups (ITBoard and Romanian SQL Server User Group).
xv
About the Technical Reviewer
5238CH00_FM 11/18/05 4:29 PM Page xv
5238CH00_FM 11/18/05 4:29 PM Page xvi
xvii
Acknowledgments
I
am very fortunate to have worked with a very talented team in the preparation of this book. It
brings me great pleasure to acknowledge them because they have each contributed so spectacularly
to the final draft of the book. As the sole author of the book, I take full responsibility for anything
that you do not like about it.
As a reader, you are my most important partner. Your opinions matter the most to me. There-
fore, I invite your thoughtful, constructive feedback so that I can make future editions of the book
better for readers. Feel free to send your feedback about the book (praise reports are especially wel-
comed) to me at
My wife, Virginia Dobson, is my partner in life and in business. I am honored that she donated
her services to this book project. She is a tireless proofreader with advanced technical skills, and she
has experience as a technical editor for well known computer industry authors. If you find any pas-
sages especially clear and helpful, it is highly likely that she had a lot to do with urging me to write
plainly and in a warm, cordial style.

Beyond my wife, I was professionally assisted by Cristian Lefter and Matthew Moodie. As the
technical editor, Cristian Lefter carefully scrutinized all the code samples and step-by-step instruc-
tions. On several occasions, he detected errors that we fixed for you, and in other cases he made
suggestions that resulted in simpler or more powerful solutions. Matthew Moodie served as the lead
editor. In this capacity, he modified every page of the book to make it more succinct and easier to
read. Both Cristian and Matthew asked many probing questions to force clarifications of the content
in the book. If you find a Tip, Note, or Caution that is especially responsive to your needs, chances are
Cristian or Matthew prompted me to insert it. This book is my seventh book project as a sole author,
and I never recalled being so blessed by two such talented editors.
Just as the content of the book was so impeccably handled by the book’s editors, the business
side of the book was equally well handled by two Apress team members. My acquisition editor was
Tony Davis. He was all that an author can hope for in an acquisition editor. He contracted with me
in an expeditious fashion for the book project. Beyond that, he made excellent editorial suggestions
on the first several chapters, which I applied to the remaining book chapters. There is no doubt that
the whole book is easier to read because of his excellent suggestions for the first couple of chapters.
Beth Christmas served as the book’s project manager. She regularly urged me to stay as close as pos-
sible to projected deadlines while always allowing me enough time to prepare the best content that
I knew how to author. In addition, she regularly assisted me in all the ways that a project manager
can to make things move expeditiously and gracefully.
It is my practice to include an acknowledgment of my Lord and Savior, Jesus Christ. He is the
author and finisher of my faith much as I am the author of this book and ultimately responsible for
its content. Jesus is my inspiration for working tirelessly to write the best book that I can for you. It
is my prayer that He blesses you so that you derive the maximum value possible from this book.
5238CH00_FM 11/18/05 4:29 PM Page xvii
5238CH00_FM 11/18/05 4:29 PM Page xviii
xix
Introduction
T
his book especially targets SQL Server Express (SSE), Visual Basic Express (VBE), and Visual Web
Developer Express (VWDE), all of which offer traditional fans of Microsoft technology an inexpen-

sive and easy route for adapting, learning, and growing professionally. As their names suggest, these
products are all compact versions of the full-blown products, and as such are easily downloaded
from the Microsoft website, allowing you to try them out without any major investment of time or
money. This also makes it easy for you to get the latest versions as soon as they are available without
having to rely on other sources.
In addition, using the Express suite components that form the focus of this book is a great way
for new developers and database administrators (or those who are new to Microsoft software) to
learn about the latest Microsoft technologies.
Beginning SQL Server 2005 Express Database Applications with Visual Basic Express and Visual
Web Developer Express From Novice to Professional gives you a solid introduction to these new tech-
nologies. After finishing this book, you will have had exposure to database, Visual Basic, and web
development techniques. This book is both
• An introduction to SSE, VBE, and VWDE
•A cookbook that is full of practical examples for developing database solutions
The code samples and sample solutions in this book show you how to perform tasks that you will
need to do as you build solutions for yourself, your colleagues, and small to mid-sized organizations.
While this book systematically explores how to perform many new and traditional database
development topics, it does not exhaustively cover every new feature. The presentation of SSE
emphasizes how to use T-SQL, Microsoft’s implementation of Structured Query Language (SQL).
You’ll learn how to use T-SQL to formulate query statements, design data manipulation statements,
and perform selected database administration topics. The integration of the .NET Framework into
SSE is mentioned in the book. However, it is my belief that those migrating to SSE from MSDE,
Access, earlier versions of SQL Server, or competitive database packages, will initially benefit the
most from learning how to perform tasks with T-SQL.
This book also covers how to create Windows applications and web applications with VBE and
VWDE. Again, the coverage of these products is highly selective. The main purpose of covering each
of these is to equip you to use them with SSE to create database solutions.
I have written a number of books and articles, many of which I support through my website,
. You will find many samples of my work there, including material
that complements this book. This includes extra examples and information relevant to Part 2 of this

book, “Working with Visual Basic Express and Visual Web Developer Express.” Feel free to visit or get
in touch with me at In addition, I have provided an online chapter that looks at
advanced VWDE topics. You can view this chapter at www.apress.com/book/bookDisplay.html?bID=459.
5238CH00_FM 11/18/05 4:29 PM Page xix
Who Is This Book For?
Beginning SQL Server 2005 Express Database Applications with Visual Basic Express and Visual Web
Developer Express From Novice to Professional is for several communities of users. The book’s overall
goal is to get any user started with SSE, including those who are working with SSE on a stand-alone
basis, as well as those who run SSE through either or both VBE and VWDE. Included in this general
summary are the following types of audiences:
•Database administrators in small and mid-sized organizations that will use SSE as their pri-
mary database
• MSDE and Access database developers and users who want to move from legacy Microsoft
database technology so that they can position themselves to take advantage of new features
not available in their legacy software
• Classic Visual Basic database developers who want to try creating database solutions with
SSE and VBE or VWDE
•Business, scientific, or technical professionals who are not IT persons, but who need to cre-
ate database solutions for their personal consumption or use by their organizational unit
•Computer hobbyists and students who want to learn about T-SQL and Visual Basic program-
ming for Microsoft’s latest database engine technology
•Professional developers who want to embed SSE in commercial packages marketed by
their firms
What Does the Book Cover?
The book has two parts. The first part, “Working with SQL Server Express,” focuses on SSE. The pro-
gramming language for this part of the book is T-SQL. The second part of the book, “Working with
Visual Basic Express and Visual Web Developer Express,” highlights the use of the Visual Basic 2005
language in VBE and VWDE. You also gain exposure to powerful graphical development techniques
for creating database solutions.
Selected topics addressed in Part 1 include

•Installing and configuring SSE
•Graphical and command-line tools for building SQL Server solutions
•Database design techniques and procedures for backing up, restoring, and copying databases
•Table design techniques, including how to manage relationships between tables
•Query design techniques, for the needs of data analysts and advanced database developers
•Programming examples for encapsulating and using T-SQL code in views, user-defined func-
tions, stored procedures, and triggers
• SSE security administration issues with a special focus on authentication and authorization,
along with selected new security topics, such as schema creation and management

INTRODUCTIONxx
5238CH00_FM 11/18/05 4:29 PM Page xx
Selected topics addressed in Part 2 include
•Techniques for creating Windows applications with VBE, with special attention on the inte-
grated development environment (IDE) and Visual Basic 2005 language programming
samples
•Techniques for creating web applications with VWDE that highlight websites managed by
the built-in VWDE web server or the Microsoft Internet Information Services (IIS) web server
•Numerous ADO.NET 2.0 code samples for programming SSE from within VBE and VWDE
•Coverage of visual database tools and graphical techniques for adding data-bound controls
to forms with VBE and VWDE

INTRODUCTION xxi
5238CH00_FM 11/18/05 4:29 PM Page xxi
5238CH00_FM 11/18/05 4:29 PM Page xxii
Working with
SQL Server Express
PART 1
■ ■ ■
5238CH01 11/18/05 4:30 PM Page 1

5238CH01 11/18/05 4:30 PM Page 2

×