读书人

这段代码第二个datareader 读取不到

发布时间: 2013-06-25 23:45:42 作者: rapoo

这段代码,第二个datareader 读取不到数据
private void product_Load(object sender, EventArgs e)
{
this.CenterToScreen();
Means mymeans = new Means();
SqlDataReader sdr_1 = mymeans.getDataReader(@"select top 1 num from product order by id desc");
string num = "";
while (sdr_1.Read())
{
num = sdr_1.GetString(0);
}
int i = Convert.ToInt32(num) + 1;
txtnum.Text = i.ToString();
sdr_1.Dispose();
sdr_1.Close();
SqlDataReader sdr_2 = mymeans.getDataReader(@"select name from frim");
while (sdr_2.Read())
{
cbofrim.Items.Add(sdr_2[0].ToString());
}
sdr_2.Dispose();
sdr_2.Close();

getDataReader 是自定义方法,这个肯定没问题,我把上面的str_1注释掉,后边就能得到数据了
[解决办法]
你在 sdr_2前,Means mymeans_2 = new Means();
然后 SqlDataReader sdr_2 = mymeans_2.getDataReader(@"select name from frim");
看看,会出现数据不。
[解决办法]
很明显 确实是你这个方法的问题,你的 my_con,my_cmd是非托管资源, 用过之后要释放资源

引用:
,public SqlDataReader getDataReader(string SQLstr)
{
getcon();
SqlCommand my_cmd = my_con.CreateCommand();
my_cmd.CommandType = CommandType.Text;
my_cmd.CommandText = SQLstr;
SqlDataReader sdr = my_cmd.ExecuteReader();
return sdr;

------解决方案--------------------


去mymeans.getDataReader这个方法里去找问题
[解决办法]

引用:
但是其他地方为什么没出这个问题呢

没问题的东西怎么弄也不会出问题,有问题的东西不代表任何时刻,任何方式都会出问题。

读书人网 >C#

热点推荐