C#同时使用2个sqldatareader

本文关键字:2个 sqldatareader | 更新日期: 2024-09-22 12:39:05

你好,有办法同时使用两个sqldatareader吗?

我正在编写一个程序

我有错误,因为我在同一上使用了两个阅读器

代码示例

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与此命令关联必须先关闭。

C#同时使用2个sqldatareader

错误消息具有误导性。您必须在连接字符串中设置MultipleActiveResultSets=True,才能使用两个不同的读卡器发送两个单独的命令。

当您使用称为多个活动结果集(MARS)的东西时,这是可能的。看看这篇有用的文章,它详细介绍了所有可能的陷阱。

您必须在连接上启用多个活动记录集(MARS)。

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

1.只需将MultipleActiveResultSets=True添加到连接字符串中即可:

private string _ConnectionString = @"Data Source=(LocalDB)'v11.0;AttachDbFilename=yourdbpath'Database.mdf;Integrated Security=True;MultipleActiveResultSets=True;Connect Timeout=30";

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