as.net(c#)数据库里的数据转换成变量时出错了!

来源:百度知道 编辑:UC知道 时间:2024/06/14 16:44:41
SqlCommand cmf = new SqlCommand();
cmf.Connection = Sql;
cmf.CommandText = "select 剩余数量 from 图书信息表 where 图书编号='" + bookID + "' ";
SqlDataReader reader2;
reader2 = cmd.ExecuteReader();
if (reader2.Read())
{
reader2.Close();
string s = reader2.GetString(10);
int num = Convert.ToInt16(s);
if (num > 0)
reader2.Close();
这是部分代码,目的是把数据库中的剩余数量这个数据提取出来,并判断其值是否大于零,运行后出现错误,“阅读器关闭时metadata的尝试无效”。哪位高手来指点下我的代码错在哪里,应该怎么更改?
我把后面的代码改成 int s=reader2.GetInt16(8);还是出现错误,怎么解决啊?
从数据库中提取数据进行数值判断的代码怎么写,给个例子也可以啊!!

恩,你笔误了吧,粗心了~
这么写
if (reader2.Read())
{
string s = reader2["剩余数量"].tostring();
int num = Convert.ToInt16(s);
if (num > 0)
reader2.Close();
}
改成这样
Over

SqlCommand cmf = new SqlCommand();
cmf.Connection = Sql;
cmf.CommandText = "select 剩余数量 from 图书信息表 where 图书编号='" + bookID + "' ";
SqlDataReader reader2;
reader2 = cmd.ExecuteReader();
if (reader2.Read())
{
//reader2.Close(); //此句注释掉,这里已经关闭了,你后面怎么读啊
string s = reader2.GetString(10);
int num = Convert.ToInt16(s);
if (num > 0)
reader2.Close();

对用你写的程序,reader2.GetString(10)是没有数据的,在后面的转换就出错了。

sqldatareader都已经关闭了,当然没有办法读出数据了啊