5

こんにちは、2 つの sqldatareader を同時に使用する方法はありますか?

私はプログラムをコーディングしていました

同時に2つのリーダーを使用しているため、エラーが発生しました

コードのサンプル

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();
}

そして、それは私にそのエラーを与えました

このコマンドに関連付けられた開いている DataReader が既に存在し、最初に閉じる必要があります。

4

5 に答える 5

14

エラー メッセージは誤解を招きます。MultipleActiveResultSets=True2 つの異なるリーダーで 2 つの別々のコマンドを送信できるようにするには、接続文字列を設定する必要があります。

于 2012-08-03T20:48:32.293 に答える
5

複数のアクティブな結果セット (MARS) と呼ばれるものを使用すると可能になります。考えられるすべての落とし穴について詳しく説明しているこの役立つ記事を確認してください。

于 2012-08-03T20:47:20.367 に答える
3

接続で複数のアクティブなレコードセット (MARS) を有効にする必要があります。

http://msdn.microsoft.com/en-us/library/h32h3abf%28v=vs.80%29.aspx

于 2012-08-03T20:47:38.283 に答える
0

public partial class Form1 : Formブロックの例でそれらの DataReader を宣言します。

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();
        }
于 2016-11-15T09:09:15.213 に答える