SIGN UP MEMBER LOGIN:    
ARTICLE

Working with the SqlConnection and SqlCommand Classes in ADO.NET

Posted by Alok Pandey Articles | ADO.NET in C# December 29, 2011
Here, you will learn about the SqlConnection and SqlCommand Classes in ADO.NET with very simple examples.
Reader Level:

Introduction

SqlConnection and SqlCommand are classes of a connected architecture and found in the System.Data.SqlClient namespace. The SqlConnection class makes the connection with the database. Further this connection (database connection) is used by the SqlCommand to work with that database. The SqlCommand class is used to execute the SQL statements. Let's work with the SqlConnection and SqlCommand classes with simple examples.

SqlConnection Class 

Here, we will use two important methods of SqlConnection.

 Open() : The open() method  is used to open the Database connection.
 Close() : The close() method is used to close the Database connection.

Look at the following code:

using
System;
using
System.Data;
using
System.Data.SqlClient;

namespace
sqlconnectionANDsqlcommand
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void btnclick_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection("Database=student;Server=.;user=sa;password=aaaaaaa");
            conn.Open(); 
// Open the connection
            // body 
            // body
            conn.Close();
// Close the connection
        }   
    }
}

In the preceding code, I have added the namespace "System.Data.SqlClient". On the button click event, I have created an
instance as "conn" of SqlConnection and passing a connection string (database) as parameter. Then, I have opened the connection by the open() method and closed to it by the close() method. We can also check whether the connection is open or closed by it's state property.
Add the following code to the application.

         private void btnclick_Click(object sender, EventArgs e)
        {
            // connection is opened. so if you click button then messagebox will be shown with the message "Open"
            SqlConnection conn = new SqlConnection("Database=student;Server=.;user=sa;password=aaaaaaa");
            conn.Open();
            MessageBox.Show(conn.State.ToString());
            conn.Close();
        }
         private void btnok_Click(object sender, EventArgs e)
        {
            // connection is not opened. so if you click button then messagebox will be shown with the message "Closed"
            SqlConnection conn = new SqlConnection("Database=student;Server=.;user=sa;password=aaaaaaa");
            MessageBox.Show(conn.State.ToString());           
        }
 

SqlCommand Class

The main role of SqlCommand is to execute SQL statements.

Properties

CommandText: The commandText property is used to set the SQL statement.

Connection: This property is used to get connection to the database source which is specified in SqlConnection. 

Method

ExecuteNonQuery() : The ExecuteNonQuery() method does not return any record. Which means we use ExecuteNonQuery() in all operations with databases except retrieving records from a database. It only returns the number of affected rows.

Now we use this method in our application. There is a database "student" and a database "student_detail" which has no record. I am giving a simple example to insert a record into database.

Take 3 labels, 3 textboxes and 1 button and arrange them as in the following figure.

sqlconnection class in .net

Write the following code

using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Linq;
using
System.Text;
using
System.Windows.Forms;
using
System.Data.SqlClient;
 

namespace
sqlconnectionANDsqlcommand
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        } 
        private void Form1_Load(object sender, EventArgs e)
        {
        }
 
        private void btnclick_Click(object sender, EventArgs e)
        {
            // Creating instance of SqlConnection
            SqlConnection conn = new SqlConnection("Database=student;Server=.;user=sa;password=
aaaaaaa");
            conn.Open();// open the database connection
            SqlCommand cmd = new SqlCommand();// Creating instance of SqlCommand
            cmd.Connection = conn; // set the connection to instance of SqlCommand
            cmd.CommandText = "insert into student_detail values (" + txtrollno.Text + ",'" + txtname.Text + "','" + txtcourse.Text + "')";
// set
           
//the sql command ( Statement )
            cmd.ExecuteNonQuery();
            MessageBox.Show("Record Saved"); // showing messagebox for confirmation message for user
            conn.Close();// Close the connection
        }
 
      }
}
 
Output

Enter the RollNo., Name and Course and click the "save" button. It will save the record into database.

ExecuteScalar() : The ExecuteScalar() returns a single value from the database. Generally it is used with an aggregate function (a function which returns a single value).
Suppose there is a need to check how many records are in the database table. Then we use this function. Add another button to your application and set its text property to "Count" and write the following code on button click. 

        private void btncount_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection("Database=student;Server=.;user=sa;password=
aaaaaaa");
            conn.Open();// open the database connection
            SqlCommand cmd = new SqlCommand();// Creating instance of SqlCommand
            cmd.Connection = conn; // set the connection to instance of SqlCommand
            cmd.CommandText = "select count (*) from student_detail" ; // set the sql command ( Statement )
            string record= cmd.ExecuteScalar().ToString();
            MessageBox.Show("Total records : "+ record );
            conn.Close();// Close the connection
        }
 

Output

When you click the "count" button, a MessageBox will be displayed to show the total number of records in the database table.

ExecuteReader() : The ExecuteReader() method can return a set of records from a database. 

I will explain more about the ExecuteReader() method in my next article....

Here are some related resources.

Login to add your contents and source code to this article
share this article :
post comment
 
Team Foundation Server Hosting
Become a Sponsor
PREMIUM SPONSORS
  • Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
    ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications. Visit DynamicPDF here
Team Foundation Server Hosting
Become a Sponsor