Using databases in C# can be daunting for developers moving from VB6, VBA, or Access. From the differences in the .NET syntax to the curly braces and semicolons, just looking at the code in C# for the first time can be intimidating. As you start to use C#, the small changes you need to make become easier and the code starts to flow nicely. However, you will likely find that many ways of working with data and databases that were easy in VB6 and VBA can be challenging when attempted for the first time in C#.

When you were programming in Classic VB, you could count on a good solid example of how to use a particular method, and it would be in context. For instance, if you were looking at a connection string example, it would likely include how to connect to the database, and it would probably also include a recordset or query. In C# and the other .NET languages, you will find fewer full examples and more examples that simply show the syntax. Or worse, they’ll show the other objects in the example, but won’t explain how to create those objects or explain where the object needs to be declared (at the form level or at the procedure level).

What led to this book was a challenge that I faced while doing something that I thought should have been very simple. I wanted to create a form with a datagrid that would load a table or query at runtime with the ability to filter, sort, and edit the records. I could do this task with Classic VB in a few minutes and in even less time with VBA inside of Access. With C#, there were pieces that were very simple, but only simple when building the connection to a single database and a single table that you define at design time. Getting code to change the datasource at runtime or connecting to a different table when your database schema changes was significantly more challenging. In addition, the help available online from within Visual Studio or even from an Internet search wasn’t very complete. It isn’t enough to know the method that you need to call; you need to understand where the variables are declared, the changes that are needed to the properties on the datagrid, the “using” references that are required, etc. Once you see it, the code is very clear, but it is less than straightforward when you are starting out.


This book teaches you some specific items to help you get started with C# and databases. You won’t tackle a full project, but rather you will get a chance to use C# in a way that helps you learn by example. Many programmers learn best by simply doing: using a concept in code that can eventually be applied to situations in the future. That is the essence of what you will accomplish by reading this book. No knowledge of C# or even VB is really required, but specific differences between Classic VB and C# will be highlighted. You don’t even need to purchase any software; you can use the freely available Visual Studio Express and SQL Server Express if you don’t have the full version of Visual Studio and/or Microsoft Office (for Access Databases). Also, you should generally be able to cut and paste code that you generate while working through this book to use in your other projects.

When you finish this book, you should be able to do the following:

  1. Create a Windows Forms Application with a datagrid

  2. Connect to multiple data sources (Access and SQL Server)

  3. Add, Edit, and Update database data with a source set at runtime

  4. Connect to a datasource at design time that cannot be changed

  5. Understand roles of DataTable, DataView, BindingSource, Filters, and other objects

  6. Understand that where variables are declared impacts the code

  7. Build a simple webservice that connects to a database

As you follow the examples in this book, you will gain confidence in using C# and will be able to leverage this knowledge in other projects. Also, it is worth noting that both VB.Net and C# are powerful languages, and one isn’t necessarily better than the other. Typically, in the past, people have used VB and VB.Net for data-rich and line-of-business applications and C# for the enterprise-level applications. But, this distinction is changing. It is true that if you are building a business application, many of the functions that you might want to use, such as net present value or other time value of money calculations, are built in to VB.Net and not to C#, which makes VB.Net the natural choice when you need that functionality. However, given how data-intense the world is becoming, you simply must know how to access, add, update, and delete data in C# if you plan to program with it. You will be able to do that if you follow the examples in this book.

Conventions Used in This Book

The following typographical conventions are used in this book:


Indicates new terms, URLs, email addresses, filenames, and file extensions.

Constant width

Used for program listings, as well as within paragraphs to refer to program elements such as variable or function names, databases, data types, environment variables, statements, and keywords.

Constant width bold

Shows commands or other text that should be typed literally by the user.

Constant width italic

Shows text that should be replaced with user-supplied values or by values determined by context.


This icon signifies a tip, suggestion, or general note.


This icon indicates a warning or caution.

Using Code Examples

This book is here to help you get your job done. In general, you may use the code in this book in your programs and documentation. You do not need to contact us for permission unless you’re reproducing a significant portion of the code. For example, writing a program that uses several chunks of code from this book does not require permission. Selling or distributing a CD-ROM of examples from O’Reilly books does require permission. Answering a question by citing this book and quoting example code does not require permission. Incorporating a significant amount of example code from this book into your product’s documentation does require permission.

We appreciate, but do not require, attribution. An attribution usually includes the title, author, publisher, and ISBN. For example: “C# Database Basics by Michael Schmalz (O’Reilly). Copyright 2012 Michael Schmalz, 978-1-449-30998-5.”

If you feel your use of code examples falls outside fair use or the permission given above, feel free to contact us at .

Safari® Books Online


Safari Books Online is an on-demand digital library that lets you easily search over 7,500 technology and creative reference books and videos to find the answers you need quickly.

With a subscription, you can read any page and watch any video from our library online. Read books on your cell phone and mobile devices. Access new titles before they are available for print, and get exclusive access to manuscripts in development and post feedback for the authors. Copy and paste code samples, organize your favorites, download chapters, bookmark key sections, create notes, print out pages, and benefit from tons of other time-saving features.

O’Reilly Media has uploaded this book to the Safari Books Online service. To have full digital access to this book and others on similar topics from O’Reilly and other publishers, sign up for free at

How to Contact Us

Please address comments and questions concerning this book to the publisher:

O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
800-998-9938 (in the United States or Canada)
707-829-0515 (international or local)
707-829-0104 (fax)

We have a web page for this book, where we list errata, examples, and any additional information. You can access this page at:

To comment or ask technical questions about this book, send email to:

For more information about our books, courses, conferences, and news, see our website at

Find us on Facebook:

Follow us on Twitter:

Watch us on YouTube:

Get C# Database Basics now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.