The Using statement in C#

Posted on 2016-10-24
Medium Priority
Last Modified: 2016-10-24
To date, I've been creating a public static class for connecting to host databases, and passing back a connection object. That entails closing the connection and disposing of all the associated objects.
I recently saw code that showed a using statement; I've really only used "using" declarations at the beginning of my code.
I see all of the examples online but none show the entire code for the class. Is there someone out there who'd like to share?
If you have any tips on implementing, I'm all ears!
Question by:Euless_Tech
LVL 22

Assisted Solution

by:Tapan Pattanaik
Tapan Pattanaik earned 500 total points
ID: 41857643
Hi Euless,

This is the sample example.

-----------------------------------------////////////////Step 1////////////////----------------------------------------
    <add name="CharityManagement" 
    connectionString="Data Source=.;Initial Catalog=CharityManagement;Integrated Security=True"/>

---------------------------------///////////////////Step 2/////////////////////-----------------------------------------------------

var connectionString=ConfigurationManager.ConnectionStrings["CharityManagement"].ConnectionString;

---------------------------------//////////////////Step 3////////////////--------------------------------------------
using (SqlConnection connection = new SqlConnection(connectionString)) 
  int employeeID = findEmployeeID();    

            SqlCommand command = new SqlCommand("UpdateEmployeeTable", connection);
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID));
            command.CommandTimeout = 5;

   catch (Exception) 
      /*Handle error*/ 


Open in new window

LVL 16

Accepted Solution

Dustin Saunders earned 1000 total points
ID: 41857649
I always use using for my SQL connections (so much less to clean up).  Here is an example of my function I use to execute inserts/updates:

        public static void WriteSQL(string sqlQuery, DataTable parameters = null)
            string cs = GetConnectionString();
            using (SqlConnection _cs = new SqlConnection(cs))
                SqlCommand cmd = new SqlCommand(sqlQuery);

                PutParameters(cmd, parameters);

                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = _cs;

Open in new window

(for reference, here is PutParameters)
        public static void PutParameters(SqlCommand cmd, DataTable parameters)
            if (parameters != null)
                foreach (DataRow row in parameters.Rows)
                    if (row[2].ToString() == "int")
                        cmd.Parameters.Add(row[0].ToString(), SqlDbType.Int).Value = Convert.ToInt32(row[1]);
                    else if (row[2].ToString() == "varchar")
                        cmd.Parameters.Add(row[0].ToString(), SqlDbType.VarChar).Value = row[1].ToString();

Open in new window


Author Comment

ID: 41857674
Either one of you that responded ever nest the using statements?
LVL 20

Assisted Solution

by:Daniel Van Der Werken
Daniel Van Der Werken earned 500 total points
ID: 41857687
The key factor for the Using statement is that the class  you're coding to implements IDisposable.

While I use this a lot, there are some cases where you wouldn't want to. For example, you might need a "handle" to the object outside of the open/close operations.

Most of the time though, you want to wrap everything you can in a using statement. Here's my example with iTextSharp. Note I've wrapped all the usings and this gives me a clean process.

                    using (Document iTextDocument = new Document(PageSize.A4, 0, 0, 0, 0))
                        using (FileStream sw = new FileStream(outputPDF, FileMode.Create))
                            using (PdfWriter pdfWriter = PdfWriter.GetInstance(iTextDocument, sw))
                                using (Bitmap bitmap = new Bitmap(inputTIFF))
                                    int pageCount = bitmap.GetFrameCount(FrameDimension.Page);
                                    PdfContentByte contentByte = pdfWriter.DirectContent;
                                    for (int i = 0; i < pageCount; i++)
                                        bitmap.SelectActiveFrame(FrameDimension.Page, i);
                                        iTextSharp.text.Image itextImage = iTextSharp.text.Image.GetInstance(bitmap, System.Drawing.Imaging.ImageFormat.Bmp);
                                        itextImage.ScalePercent(72.0f / itextImage.DpiX * 100);
                                        itextImage.SetAbsolutePosition(0.0f, 0.0f);

Open in new window


Author Closing Comment

ID: 41857730
Thanks guys. Appreciate the quick response.

Featured Post

The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

In real business world data are crucial and sometimes data are shared among different information systems. Hence, an agreeable file transfer protocol need to be established.
Native ability to set a user account password via AD GPO was removed because the passwords can be easily decrypted by any authenticated user in the domain. Microsoft recommends LAPS as a replacement and I have written an article that does something …
This video tutorial shows you the steps to go through to set up what I believe to be the best email app on the android platform to read Exchange mail.  Get the app on your phone: The first step is to make sure you have the Samsung Email app on your …
From store locators to asset tracking and route optimization, learn how leading companies are using Google Maps APIs throughout the customer journey to increase checkout conversions, boost user engagement, and optimize order fulfillment. Powered …
Suggested Courses

597 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question