Reputation: 647
Hello is there a way to use two sqldatareader at same time ?
i was coding a program
and i got error because i use 2 readers at same
Sample of code
SqlCommand LoadSilk = new SqlCommand("SELECT silk_own FROM SK_Silk WHERE JID = (SELECT JID FROM TB_User WHERE StrUserID = '"+ comboBox1.Text +"')", Connection);
SqlDataReader SilkReader = LoadSilk.ExecuteReader();
SqlCommand LoadCharacter = new SqlCommand("SELECT * FROM SRO_VT_SHARD.DBO._Char WHERE CharID IN (SELECT CharID FROM SRO_VT_SHARD.DBO._User WHERE UserJID = "+ JID +")", Connection);
SqlDataReader CharacterReader = LoadCharacter.ExecuteReader();
try
{
SilkReader.Read();
textBox5.Text = SilkReader[0].ToString();
Silk = SilkReader[0].ToString();
dataGridView1.Enabled = true;
button2.Enabled = true;
while (CharacterReader.Read()) {
dataGridView1.Rows.Add(CharacterReader["CharID"].ToString(), CharacterReader["CharName16"].ToString(), CharacterReader["CurLevel"].ToString());
}
log(comboBox1.Text + " account data loaded");
}
catch (Exception ex) {
log(ex.Message);
MessageBox.Show("Error");
} finally {
SilkReader.Close();
CharacterReader.Close();
}
and its gave me that error
There is already an open DataReader associated with this Command which must be closed first.
Upvotes: 5
Views: 16296
Reputation: 872
1.Just add MultipleActiveResultSets=True into your connection string:
private string _ConnectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=yourdbpath\Database.mdf;Integrated Security=True;MultipleActiveResultSets=True;Connect Timeout=30";
Upvotes: 1
Reputation: 1
Declare those DataReader in the block public partial class Form1 : Form
Example:
namespace GoodFood_1_
{
public partial class Autentificare_client : Form
{
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\edi_b\Documents\visual studio 2013\Projects\GoodFood(1)\GoodFood(1)\GOOD_FOOD.mdf;
Integrated Security=True;MultipleActiveResultSets=True");
SqlConnection con2 = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=c:\users\edi_b\documents\visual studio 2013\Projects\GoodFood(1)\GoodFood(1)\GOOD_FOOD.mdf;
Integrated Security=True;MultipleActiveResultSets=True");
SqlDataReader dr;
SqlDataReader cc;
public Autentificare_client()
{
InitializeComponent();
}
Upvotes: 0
Reputation: 25397
The error message is misleading. You must have MultipleActiveResultSets=True
set in your connection string to be able to send two seperate commands with two different readers.
Upvotes: 14
Reputation: 5832
You'll have to enable Multiple Active Recordsets (MARS) on your connection.
http://msdn.microsoft.com/en-us/library/h32h3abf%28v=vs.80%29.aspx
Upvotes: 3
Reputation: 7088
It is possible when you use something called Multiple Active Result Sets, or MARS. Check out this helpful article that details all possible pitfalls.
Upvotes: 5