我有一个项目类,与之相关我有一个类和负责类。当我想将项目对象添加到数据库时,我从categories类中调用一个方法来获取类别id,并对负责的类执行相同的操作。我的意思是:
int categoryId = getCategoryId("Beverages");
int responsibleId = getResponsibleId("An Example Name");
这两个方法在不同的类中,但使用类似的代码。当我运行程序时,我收到错误:
"There is already an open DataReader associated with this Command which must be closed first."
答案 0 :(得分:0)
您必须修复代码,以便只有一个活动(开放)DataReader对象在单个DbConnection上处于活动状态,或在您的连接字符串中启用MARS(MultipleActiveResultSets=True
)。
答案 1 :(得分:0)
我同意Mithrandir的观点,但你的问题还有另一种解决方法;我想你列出的方法可以访问数据库(愚蠢,我知道,但是我不知道),并且它们都打开了与同一个数据库的连接。您应该在代码中添加的是最后一个块,它在执行事务后关闭数据库连接:
try
{
string sql="select * from ...."
connection.Open();
comand.CommandText = sql;
comand.ExecuteNonQuery();
}
catch(SQLException)
{
}
finally
{
if (connection!=null)
{
connection.Close();
}
}