Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 805393
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 15, 20262026-05-15T00:04:28+00:00 2026-05-15T00:04:28+00:00

I was recently advocating to a colleague that we replace some C# code that

  • 0

I was recently advocating to a colleague that we replace some C# code that uses the sqlcmd command line utility with a SqlDataReader. The old code uses:
System.Diagnostics.ProcessStartInfo procStartInfo =
new System.Diagnostics.ProcessStartInfo(“cmd”, “/c ” + sqlCmd); wher sqlCmd is something like
“sqlcmd -S ” + serverName + ” -y 0 -h-1 -Q ” + “\”” + “USE [” + database + “]” + “;+ txtQuery.Text +”\””;\

The results are then parsed using regular expressions. I argued that using a SQLDataReader woud be more in line with industry practices, easier to debug and maintain and probably faster. However, the SQLDataReader approach is at least the same speed and quite possibly slower. I believe I’m doing everything correctly with SQLDataReader. The code is:

using (SqlConnection connection =
         new SqlConnection())
        {
            try
            {
                SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectionString);
                connection.ConnectionString = builder.ToString(); ;
                SqlCommand command =
                    new SqlCommand(queryString, connection);

                connection.Open();



                SqlDataReader reader = command.ExecuteReader();

    // do stuff w/ reader 
                reader.Close();

            }
            catch (Exception ex)
            {
                outputMessage += (ex.Message);
            }
        } 

I’ve used System.Diagnostics.Stopwatch to time both approaches and the command line utility (called from C# code) does seem faster (20-40%?). The SqlDataReader has the neat feature that when the same code is called again, it’s lightening fast, but for this application we don’t anticipate that.

I have already done some research on this problem. I note that the command line utility sqlcmd uses OLE DB technology to hit the database. Is that faster than ADO.NET? I’m really suprised, especially since the command line utility approach involves starting up a process. I really thought it would be slower.

Any thoughts?

Thanks,
Dave

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-15T00:04:29+00:00Added an answer on May 15, 2026 at 12:04 am

    I think SqlDataReader is slower than sqlcmd because making a SqlDataReader not only fetches the data but also gets the database schema info, and the sqlcmd gets the data only.
    You can get a column name with a datareader like this:

    for (int i = 0; i < reader.FieldCount; i++)
    {
        Console.WriteLine(reader.GetName(i));
    }
    

    Sometimes performance is not important, security is more important.
    But I don’t know which is more secure, maybe SqlDataReader is.

    I am a Chinese, so maybe my word is incorrect for the grammer, sorry.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Recently, I started changing some of our applications to support MS SQL Server as
Recently a friend and I were talking about securing stored procedure code in a
Recently I had to type up some documentation on .net data providers and ado.net.
Recently i've switched to PHP 5.3+ and after that migration i learned that the
Recently I've started hearing about POJOs (Plain Old Java Objects). I googled it, but
Recently I've started to develop Android Soft Keyboard and got some problem with preferences.
Recently, I've been running some tests with C++ and VB.NET to compare execution speeds.
Recently Jeff has posted regarding his trouble with database deadlocks related to reading. Multiversion
Recently I have been investigating the possibilities of caching in ASP.NET. I rolled my
Recently, I've been dealing with an error with accessing MAPI via the .NET framework

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.