哈哈!我也遇到过这个问题的!这是由于有外键的原因,empInfo.Empleval = new HotelDAL.HotelLevalService().GetLevalInfoByLevalId(Convert.ToInt32(reader["Empleval"].ToString())); 先把这句注释了。
错误的195行是哪一行啊???你的代码都是一样的,看不出来是哪里错了!可以设置断点一行一行查嘛!不行用最彻底的 连接conn.Dispose(); 释放所有资源!
你应该在finally里关闭datareader
而不是在try里面
按你现在的写法 如果在try里面出错,根本不会关闭datareader
也就失去了try的意义
另外你可以调试一下看具体哪个位置出错了
首先,你的程序在打开 reader 后,出错了,所以就没有关掉,在你下一个方法执行的时候就直接说你有这样的一个实例在用,
你可以用using(){}的形式来用这个reader,在使用完后回自动回收,近可能不要用手动控制,毕竟地层的东西都已经封装了,看不到.
楼上的说法有道理,reader.close 没有执行到。 加个日志。
例如,需要Try...Catch...Finally 如果你觉得不保险,可以在Finally 中调用reader.Close() 方法。
Code