Solved

How to execute two queries simultaneously

Posted on 2010-08-25
6
448 Views
Last Modified: 2012-05-10
Experts
please see the attached image and the error there.
Now please suggest me how to execute the two queries simultaneously.

Apart from my attempt in this if there is a better way to execute the same then please let me know .
Thanking you,
Anindya
private void display_companyName_atUpdateMode()
        {
            Int32 comID = 0;
            using (SqlConnection con = new SqlConnection(Connectionstring.Connection))
            {
                string query = "select CompanyID from Table_Interaction where InteractionID='" +Convert.ToInt32( InteractionID.ToString() )+ "' ";
                using (SqlCommand cmd = new SqlCommand(query, con))
                {
                    con.Open();
                    SqlDataReader reader = cmd.ExecuteReader();
                    if (!reader.HasRows) return;
                    while (reader.Read())
                    {
                        comID=Convert.ToInt32(string.Format("{0}",reader[0]));
                        string query2 = "select CompanyName from Table_Client where CompanyID=@param";
                        SqlCommand cmd2 = new SqlCommand(query2, con);
                        cmd2.Parameters.AddWithValue("@param", comID);
                        SqlDataReader reader1 = cmd2.ExecuteReader();
                        if (!reader1.HasRows) return;
                        while (reader.Read())
                        {
                            comboBox_client.Text = string.Format("{0}", reader1[0]);
                        }


                    }
                }
            }
                 
        }

Open in new window

error.JPG
error.JPG
0
Comment
Question by:ANINDYA
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
6 Comments
 
LVL 3

Expert Comment

by:celdridgeMadman
ID: 33528577
I think you'll find you can only execute 1 select command at a time per connection object. Fire up another connection and use that for your second query.
0
 
LVL 16

Accepted Solution

by:
Vikram Singh Saini earned 250 total points
ID: 33528617
0
 

Author Comment

by:ANINDYA
ID: 33528619
Expert celdridgeMadman
is it the only method used by all the developers or there is any other better way is there .
I am asking as I am fresher so I would like to know what is the best way to do that.
Thanking you
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 3

Assisted Solution

by:celdridgeMadman
celdridgeMadman earned 250 total points
ID: 33528663
Certainly not the "Best" way. It's a bit wasteful to use 2 connections when they're not needed. The "multiple active result set" (see vs00saini's links above)  seems ideal for this situation, but without knowing what version of ADO.NET you're using I can't say if they will work.

Another alternative is to copy the data locally into an array of some sort and loop through that, keeping in mind to only have 1 connection/command going at once.
0
 

Author Closing Comment

by:ANINDYA
ID: 33529136
Experts thanks for finding time and answering.
Anindya Chatterjee
Bangalore
India
0
 
LVL 5

Expert Comment

by:Akin Delu
ID: 33529238
SqlDataReader will not let you use its connection with another SqlDataReader while its still open, why not try using a DataTable for the first query then loop through the rows of the DataTable obj then execute your second query.

This is a sample code
===================
string connstr = ConfigurationManager.ConnectionStrings["dbconn"].ConnectionString;
SqlConnection c = new SqlConnection(connstr);
c.Open();
SqlDataAdapter adapter1 = new SqlDataAdapter("select * from table1", c);
DataTable dt1 = new DataTable();
adapter1.Fill(dt1);
foreach (DataRow dr in dt1.Rows)
{
           int id = int.Parse(dr["acc_class_fk"].ToString());
           SqlDataAdapter adapter2 = new SqlDataAdapter("select * from table2 where id = "+id+"", c);
           DataTable dt2 = new DataTable();
           adapter2.Fill(dt2);
}
c.Close();

note dbconn is a connectionstring entry in the webconfig
0

Featured Post

Use Case: Protecting a Hybrid Cloud Infrastructure

Microsoft Azure is rapidly becoming the norm in dynamic IT environments. This document describes the challenges that organizations face when protecting data in a hybrid cloud IT environment and presents a use case to demonstrate how Acronis Backup protects all data.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

I'm trying, I really am. But I've seen so many wrong approaches involving date(time) boundaries I despair about my inability to explain it. I've seen quite a few recently that define a non-leap year as 364 days, or 366 days and the list goes on. …
How to leverage one TLS certificate to encrypt Microsoft SQL traffic and Remote Desktop Services, versus creating multiple tickets for the same server.
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…
Finding and deleting duplicate (picture) files can be a time consuming task. My wife and I, our three kids and their families all share one dilemma: Managing our pictures. Between desktops, laptops, phones, tablets, and cameras; over the last decade…

751 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