C With Database 2nd Sem
C With Database 2nd Sem
C With Database 2nd Sem
Accessing Data from a database is one of the important aspects of any programming
language. It is an absolute necessity for any programming language to have the ability to
work with databases. C# is no different.
It can work with different types of databases. It can work with the most common databases
such as Oracle and Microsoft SQL Server.
It also can work with new forms of databases such as MongoDB and MySQL.
C# and .Net can work with a majority of databases, the most common being Oracle and
Microsoft SQL Server. But with every database, the logic behind working with all of them is
mostly the same.
In the examples, you will look at working the Microsoft SQL Server as your database. In
working with databases, the following are the concepts which are common to all databases.
1. Connection – To work with the data in a database, the first obvious step is the
connection. The connection to a database normally consists of the below-mentioned
parameters.
1. Database name or Data Source – The first important parameter is the
database name to which the connection needs to be established. Each
connection can only work with one database at a time.
2. Credentials – The next important aspect is the username and password which
needs to be used to establish a connection to the database. It ensures that the
username and password have the necessary privileges to connect to the
database.
3. Optional parameters - For each database type, you can specify optional
parameters to provide more information on how .net should handle the
connection to the database. For example, one can specify a parameter for how
long the connection should stay active. If no operation is performed for a
specific period of time, then the parameter would determine if the connection
has to be closed.
2. Selecting data from the database – Once the connection has been established, the
next important aspect is to fetch the data from the database. C# can execute 'SQL'
select command against the database. The 'SQL' statement can be used to fetch data
from a specific table in the database.
3. Inserting data into the database – C# can also be used to insert records into the
database. Values can be specified in C# for each row that needs to be inserted into
the database.
4. Updating data into the database – C# can also be used to update existing records
into the database. New values can be specified in C# for each row that needs to be
updated into the database.
5. Deleting data from a database – C# can also be used to delete records into the
database. Select commands to specify which rows need to be deleted can be
specified in C#.
1|Page
B. How to connect C# to Database
In this example, you will connect to a database which has the name of Demodb. The
credentials used to connect to the database are given below
Username – sa
Password – demo123
You will see a simple Windows forms application to work with databases. You will have a
simple button called "Connect" which will be used to connect to the database.
Step 1) The first step involves the creation of a new project in Visual Studio. After
launching Visual Studio, you need to choose the menu option New->Project.
Step 2) The next step is to choose the project type as a Windows Forms application. Here,
you also need to mention the name and location of our project.
1. In the project dialog box, you can see various options for creating different types of
projects in Visual Studio. Click the Windows option on the left-hand side.
2|Page
2. When you click the Windows options in the previous step, you will be able to see an
option for Windows Forms Application. Click this option.
3. You then give a name for the application which in our case is "DemoApplication".
You also need to provide a location to store our application.
4. Finally, you click the 'OK' button to let Visual Studio to create our project.
Step 3) Now add a button from the toolbox to the Windows form. Put the text property of
the Button as Connect. This is how it will look like
Step 4) Now double click the form so that an event handler is added to the code for the
button click event. In the event handler, add the below code.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
3|Page
namespace DemoApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Code Explanation:-
1. The first step is to create variables, which will be used to create the connection
string and the connection to the SQL Server database.
2. The next step is to create the connection string. The connecting string needs to be
specified correctly for C# to understand the connection string. The connection string
consists of the following parts
1. Data Source – This is the name of the server on which the database resides. In
our case, it resides on a machine called WIN- 50GP30FGO75.
2. The Initial Catalog is used to specify the name of the database
3. The UserID and Password are the credentials required to connect to the
database.
3. Next, you assign the connecting string to the variable cnn. The variable cnn, which is
of type SqlConnection is used to establish the connection to the database.
4. Next, you use the Open method of the cnn variable to open a connection to the
database. You then just display a message to the user that the connection is
established.
5. Once the operation is completed successfully, you then close the connection to the
database. It is always a good practice to close the connection to the database if
nothing else is required to be done on the database.
When the above code is set, and the project is executed using Visual Studio, you will get the
below output. Once the form is displayed, click the Connect button.
Output:-
4|Page
When you click on "connect" button, from the output, you can see that the database
connection was established. Hence, the message box was displayed.
To showcase how data can be accessed using C#, let us assume that you have the following
artifacts in our database.
1. A table called demotb. This table will be used to store the ID and names of various
Tutorials.
2. The table will have 2 columns, one called "TutorialID" and the other called
"TutorialName."
3. For the moment, the table will have 2 rows as shown below.
TutorialID TutorialName
1 C#
2 ASP.Net
Change the code in our form, so that you can query for this data and display the
information via a Messagebox. Note that all the code entered below is a continuation of the
code written for the data connection in the previous section.
Step 1) Split the code into 2 parts so that it will be easy to understand for the user.
The first will be to construct our "select" statement, which will be used to read the
data from the database.
You will then execute the "select" statement against the database and fetch all the
table rows accordingly.
5|Page
Code Explanation:-
Step 2) In the final step, you will just display the output to the user and close all the objects
related to the database operation.
Code Explanation:-
1. You will continue our code by displaying the value of the Output variable using the
MessageBox. The Output variable will contain all the values from the demotb table.
6|Page
2. You finally close all the objects related to our database operation. Remember this is
always a good practice.
When the above code is set, and the project is run using Visual Studio, you will get the
below output. Once the form is displayed, click the Connect button.
Output:-
From the output, you can clearly see that the program was able to get the values from the
database. The data is then displayed in the message box.
Just like Accessing data, C# has the ability to insert records into the database as well. To
showcase how to insert records into our database, take the same table structure which was
used above.
TutorialID TutorialName
1 C#
2 ASP.Net
Change the code in our form, so that you can insert the following row into the table
TutorialID TutorialName
3 VB.Net
So add the following code to our program. The below code snippet will be used to insert an
existing record in our database.
7|Page
Code Explanation:-
When the above code is set, and the project is executed using Visual Studio, you will get the
below output. Once the form is displayed, click the Connect button.
Output:-
8|Page
If you go to SQL Server Express and see the rows in the demotb table, you will see the row
inserted as shown below
D. C# Update Database
Just like Accessing data, C# has the ability to update existing records from the database as
well. To showcase how to update records into our database, take the same table structure
which was used above.
TutorialID TutorialName
1 C#
2 ASP.Net
3 VB.Net
Change the code in our form, so that you can update the following row. The old row value is
TutorialID as "3" and Tutorial Name as "VB.Net". Which you will update it to "VB.Net
complete" while the row value for Tutorial ID will remain same.
Old row
TutorialID TutorialName
3 VB.Net
New row
TutorialID TutorialName
3 VB.Net complete
So add the following code to your program. The below code snippet will be used to update
an existing record in our database.
9|Page
Code Explanation:-
When the above code is set, and the project is executed using Visual Studio, you will get the
below output. Once the form is displayed, click the Connect button.
Output:-
10 | P a g e
If you actually go to SQL Server Express and see the rows in the demotb table, you will see
the row was successfully updated as shown below.
E. Deleting Records
Just like Accessing data, C# has the ability to delete existing records from the database as
well. To showcase how to delete records into our database, take the same table structure
which was used above.
TutorialID TutorialName
1 C#
2 ASP.Net
3 VB.Net complete
Change the code in our form, so that you can delete the following row
TutorialID TutorialName
3 VB.Net complete
So add the following code to our program. The below code snippet will be used to delete an
existing record in our database.
11 | P a g e
Code Explanation:-
1. The Key difference in this code is that you are now issuing the delete SQL statement.
The delete statement is used to delete the row in the demotb table in which the
TutorialID has a value of 3.
2. In our data adapter command, you now associate the insert SQL command to our
adapter. You also then issue the ExecuteNonQuery method which is used to execute
the Delete statement against our database.
When the above code is set, and the project is executed using Visual Studio, you will get the
below output. Once the form is displayed, click the Connect button.
Output:-
If you actually go to SQL Server Express and see the rows in the demotb table, you will see
the row was successfully deleted as shown below.
In the earlier sections, you have seen how to you can use C# commands such as
SQLCommand and SQLReader to fetch data from a database. You also saw how you read
each row of the table and use a messagebox to display the contents of a table to the user.
12 | P a g e
But obviously, users don't want to see data sent via message boxes and would want better
controls to display the data. Let's take the below data structure in a table
TutorialID TutorialName
1 C#
2 ASP.Net
3 VB.Net complete
From the above data structure, the user would ideally want to see the TutorialID and
Tutorial Name displayed in a textbox. Secondly, they might want to have some sort of
button control which could allow them to go to the next record or to the previous record in
the table. This would require a bit of extra coding from the developer's end.
C# can reduce the additional coding effort by allowing binding of controls to data. What
this means is that C# can automatically populate the value of the textbox as per a particular
field of the table.
So, you can have 2 textboxes in a windows form. You can then link one text box to the
TutorialID field and another textbox to the TutorialName field. This linking is done in the
Visual Studio designer itself, and you don't need to write extra code for this.
Visual Studio will ensure that it writes the code for you to ensure the linkage works. Then
when you run your application, the textbox controls will automatically connect to the
database, fetch the data and display it in the textbox controls. No coding is required from
the developer's end to achieve this.
In the example, you are going to create 2 textboxes on the windows form. They are going to
represent the Tutorial ID and Tutorial Name respectively. They will be bound to the
Tutorial ID and TutorialName fields of the database accordingly.
Step 1) Construct the basic form. In the form drag and drop 2 components- labels and
textboxes. Then carry out the following substeps
Below is the how the form would look like once the above-mentioned steps are performed.
13 | P a g e
Step 2) The next step is to add a binding Navigator to the form. The binding Navigator
control can automatically navigate through each row of the table. To add the binding
navigator, just go to the toolbox and drag it to the form.
Step 3) The next step is to add a binding to our database. This can be done by going to any
of the Textbox control and clicking on the DataBindings->Text property. The Binding
Navigator is used to establish a link from your application to a database.
When you perform this step, Visual Studio will automatically add the required code to the
application to make sure the application is linked to the database. Normally the database in
Visual Studio is referred to as a Project Data Source. So to ensure the connection is
established between the application and the database, the first step is to create a project
data source.
The following screen will show up. Click on the link- "Add Project Data Source". When you
click on the project data source, you will be presented with a wizard; this will allow you to
define the database connection.
Step 4) Once you click on the Add Project Data Source link, you will be presented with a
wizard which will be used to create a connection to the demotb database. The following
steps show in detail what needs to be configured during each step of the wizard.
14 | P a g e
1. In the screen which pops up , choose the Data Source type as Database and then
click on next button.
2. In the next screen, you need to start the creation of the connection string to the
database. The connection string is required for the application to establish a
connection to the database. It contains the parameters such as server name,
database name, and the name of the driver.
1. Click on the New connection button
2. Choose the Data Source as Microsoft SQL Server
3. Click the Continue button.
5. In the next screen, click on the "Next" button to confirm the creation of the
connection string
16 | P a g e
6. In this step,
1. Choose the tables of Demotb, which will be shown in the next screen.
2. This table will now become an available data source in the C# project
When you click the Finish button, Visual Studio will now ensure that the application can
query all the rows in the table Demotb.
Step 5) Now that the data source is defined, you now need to connect the TutorialID and
TutorialName textbox to the demotb table. When you click on the Text property of either
17 | P a g e
the TutorialID or TutorialName textbox, you will now see that the binding source to
Demotb is available.
For the first text box choose the Tutorial ID. Repeat this step for the second textbox and
choose the field as TutorialName. The below steps shows how you can navigate to each
control and change the binding accordingly.
2. In the Properties window, you will see the properties of the TutorialID textbox. Go
to the text property and click on the down arrow button.
3. When you click the down arrow button, you will see the demotbBinding Source
option. And under this, you will see the options of TutorialName and TutorialID.
Choose the Tutorial ID one.
18 | P a g e
Repeat the above 3 steps for the Tutorial Name text box.
Step 6) Next you need to change the Binding Source property of the BindingNavigator to
point to our Demotb data source. The reason you do this is that the Binding Navigator also
needs to know which table it needs to refer to.
The Binding Navigator is used to select the next or previous record in the table. So even
though the data source is added to the project as a whole and to the text box control, you
still need to ensure the Binding Navigator also has a link to our data source. In order to do
this, you need to click the Binding navigator object, go to the Binding Source property and
choose the one that is available
Next, you need to go to the Properties window so that you can make the change to Binding
Source property.
19 | P a g e
When all of the above steps are executed successfully, you will get the below-mentioned
output.
Output:-
Now when the project is launched, you can see that the textboxes automatically get the
values from the table.
When you click the Next button on the Navigator, it automatically goes to the next record in
the table. And the values of the next record automatically come in the text boxes
C# DataGridView
20 | P a g e
Data Grids are used to display data from a table in a grid-like format. When a user sees's
table data, they normally prefer seeing all the table rows in one shot. This can be achieved
if you can display the data in a grid on the form.
C# and Visual Studio have inbuilt data grids, this can be used to display data. Let's take a
look at an example of this. In our example, you will have a data grid, which will be used to
display the Tutorial ID and Tutorial Name values from the demotb table.
Step 1) Drag the DataGridView control from the toolbox to the Form in Visual Studio. The
DataGridView control is used in Visual Studio to display the rows of a table in a grid-like
format.
Step 2) In the next step, you need to connect our data grid to the database. In the last
section, you had created a project data source. Let's use the same data source in our
example.
1. First, you need to choose the grid and click on the arrow in the grid. This will bring
up the grid configuration options.
2. In the configuration options, just choose the data source as demotbBindingSource
which was the data source created in the earlier section.
If all the above steps are executed as shown, you will get the below-mentioned output.
21 | P a g e
Output:-
From the output, you can see that the grid was populated by the values from the database.
Summary
C# can work with databases such as Oracle and Microsoft SQL Server.
C# has all the commands which are required to work with databases. This involves
establishing a connection to the database. You can perform operations such as
select, update, insert and delete using the commands in C#.
The DataReader object in C# is used to hold all the data returned by the database.
The While loop in C# can be used to read the data rows one at a time.
The data adapter object is used to perform SQL operations such as insert, delete, and
update against the database.
C# can bind controls to the various fields in a table. They are bound by defining a
data source in C#. The data source is used to pull the data from the database and
populate them in the controls.
The binding navigator is used to automatically navigate through the rows in a table.
The data grid in C# can connect to the database and display all the values from the
table in a grid-like format.
22 | P a g e