相关文章推荐
苦恼的山羊  ·  面试官:SOA ...·  2 周前    · 

解决方法如下:
1、不同的reader对象不要共用一个Connection对象。
2、不要在while代码段内执行reader.Close();语句。否则继续执行while代码段内语句会报“阅读器关闭时尝试调用 Read 无效。”错误提示。

”数据库 一般是 一个 Connection 只允许 有一个 活动的(打开的) SqlDataReader要想 一个 Connection 允许 有多个 活动的(打开的) SqlDataReader 就需要设置 Connection 的 MultipleActiveResultSets=True“
1、主要原因是 DataReader 在打开使用时,一个 SqlConnection 只允许打开一个 DataReader,在开启另一个 DataReader 时,必须将前面一个先 Close 掉。

2、 在使用数据库更新或插入语句时,大家通常使用 SqlCommand 的 ExecuteNonQuery() 方法,并且前提是定义了一个公共的数据库连接(如果每次查询时都生成新连接的话不会存在这个问题,但那样数据库占用的资源相对会高很多),在ExecuteNonQuery() 后,内部会生成一个空的 DataReader 对象,并当当前的数据库连接关闭掉后,该 DataReader 才会释放。因此在大家使用更新方法时,推荐使用 using 关键字,它作为语句,可以将它所定义范围内的对象都释放掉。

private static string strConn = ConfigurationManager.ConnectionStrings[“SQLLSB2008”].ConnectionString;
private static SqlConnection myConn = null;

private static SqlDataAdapter myAdapter = new SqlDataAdapter();
private static SqlCommand myCmd = new SqlCommand();
private static DataTable myTable = new DataTable();

public static DataTable returnDataTable(string mySql, SqlParameter[] parameters)
{
myConn = new SqlConnection(strConn);
using (myCmd = new SqlCommand(mySql, myConn))
{
try
{
myCmd.Parameters.AddRange(parameters);
myAdapter = new SqlDataAdapter(myCmd);
myTable.Clear();
myAdapter.Fill(myTable);
}
catch
{
connClose();
}
finally
{
connClose();
}
}
return myTable;
}

解决方法如下:1、不同的reader对象不要共用一个Connection对象。2、不要在while代码段内执行reader.Close();语句。否则继续执行while代码段内语句会报“阅读器关闭时尝试调用 Read 无效。”错误提示。”数据库 一般是 一个 Connection 只允许 有一个 活动的(打开的) SqlDataReader要想 一个 Connection 允许 有多个 活动的(打开的) SqlDataReader 就需要设置 Connection 的 MultipleActiveRe
ql Command 在每次执行ExecuteNonQuery()方法之后,内部会生成一个空的 DataReader 对象,该对象只有在 数据库 连接 关闭 之后,才会被释放掉,加上上边提到的,在DBHelper类中 数据库 连接对象是一个静态的全局变量。因为在同时调用API进行数据查询时,在第一个查询还未结束, 数据库 连接对象还未 关闭 ,第二个查询却已经开始查询,所以才会出现 DataReader 没有 关闭 的情况 方法有...
1、主要原因是 DataReader 打开 使用时,一个 SqlConnection 只允许 打开 一个 DataReader ,在开启另一个 DataReader 时, 必须 将前面一个先 Close 掉。 2、在语句中并未使用 DataReader ,也提示同样的错误。目前已知问题为:      使用 Sql Command 的 ExecuteNonQuery()
原因: DataReader 打开 使用时,一个 SqlConnection 只允许 打开 一个 DataReader ,在开启另一个 DataReader 时, 必须 将前面一个先 Close 掉。 使用 数据库 更新或插入语句时,通常用 Sql Command 的 ExecuteNonQuery() 方法,并且定义了一个公共的 数据库 连接,每次查询时都生成新连接不会有这个问题,但会占用高的 数据库 资源。这种情况下,内部会生成一个空的 DataReader 对象,当前的 数据库 连接 关闭 掉后,该 DataReader 才会释放。.
错误信息: System.NotSupported Exception :“The specified LINQ expression contains references to queries that are associated with different contexts.” 不支持的异常:指定的Linq语句包含了来自不同上下文的查询。 原因分析: 不支持跨DbContext查询,例如join两个不同的DbContext。 解决办法: 将其中一个查询结果先转换为本地查询,例如List集合。
很久没遇到这个问题,都忘记是什么引起的了,记个笔记。 首先foreach遍历是根据列表下标遍历的,foreach遍历前,会根据列表生成对标数组,如列表[1,2,3,4],生成的下标分别是(0,1,2,3),遍历的过程中删除元素,会导致列表变动,后面的元素前移。 如遍历中要删除列表中的元素“1”,删除元素“1”后,列表依次前移,变为[2,3,4],而下一个下标是1,根据下标访问现在的列表,就访问...