ProgrammingMSAccess.com

Learn about Developers Group
Join Developers Group
Order SPAM Blocker
Free Stuff
Guest Book
.NET Resources
SQL Server Resources
Favorites
Technical Support
Books & DVDs by Webmaster
Articles, tutorials, & more
FAQs
Product Reviews
Samples
Prior Newsletters
Contact Us
Home
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

by Rick Dobson, Ph.D.

Here's a detailed table of contents for the book.  The table of contents shows page numbers so that you can see that our book provides overall in-depth coverage as well as the amount of space devoted to each major topic.  If you want a more general overview of the book and who's it for see our FAQ for the book with its answer to the question about who the book is for.

 

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

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

Adding Data to Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

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

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

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

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

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