我用sqlDateRead对象读取数据时 出现错误报告,报告如下:
”阅读器关闭时尝试调用 FieldCount 无效“这是怎么回事?读取数据的代码如下: SqlConnection con = new SqlConnection(constring);
con.Open();
SqlCommand cmd = new SqlCommand("getbookmessage", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@bookid", SqlDbType.SmallInt);
cmd.Parameters["@bookid"].Value = bookid;
SqlDataReader dt = cmd.ExecuteReader();
while (dt.Read())
{
bookname = dt["bookname"].ToString();
orgcost = Convert .ToDecimal (dt["orgcost"].ToString().Trim ());
//stock = Convert.ToInt32(dt["stock"].ToString().Trim());
discount = Convert .ToSingle (dt["discount"].ToString());
price = Convert.ToDecimal(dt["price"].ToString());
booksid = Convert.ToInt32(dt["bookid"].ToString());
}
dt.Close();
con.Close();
return dt;
各位仁兄 帮忙看下那里出错了哈!
”阅读器关闭时尝试调用 FieldCount 无效“这是怎么回事?读取数据的代码如下: SqlConnection con = new SqlConnection(constring);
con.Open();
SqlCommand cmd = new SqlCommand("getbookmessage", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@bookid", SqlDbType.SmallInt);
cmd.Parameters["@bookid"].Value = bookid;
SqlDataReader dt = cmd.ExecuteReader();
while (dt.Read())
{
bookname = dt["bookname"].ToString();
orgcost = Convert .ToDecimal (dt["orgcost"].ToString().Trim ());
//stock = Convert.ToInt32(dt["stock"].ToString().Trim());
discount = Convert .ToSingle (dt["discount"].ToString());
price = Convert.ToDecimal(dt["price"].ToString());
booksid = Convert.ToInt32(dt["bookid"].ToString());
}
dt.Close();
con.Close();
return dt;
各位仁兄 帮忙看下那里出错了哈!
con.Close();
return dt;?
con.Close(); 你 SqlDataReader 对象已经关闭了,还如何返回啊、、、
你要想返回此对象,就把
dt.Close();
con.Close();
这两个去掉,直接返在 dt ,不过要在你调用的地方用完后别主忘记关掉了、、、
con.Close();
return dt; ?
已经关闭了,怎么返回啊!
最好不传reader,打开和关闭很容易出错的。
当你读取的时候还是个问题呢。
不如把它转成DataTable,返回。使用时是绑定,
还是读取都不会有打开和关闭的问题。楼主何不试下……