打印

[.net] 如何从数据库读取一条数据

我只要读出一条数据
也就是sql语句只会返回一条数据
所以不想用dataset
我想把查询语句写在我自己编的类库里面
这样以后调用起来也方便

现在考虑使用 SqlDataReader  但是出现错误是  “阅读器关闭时 MetaData 的尝试无效”
在cs文件中取不到值...

Cs:
复制内容到剪贴板
代码:
sqlstr = "select * from ... where ...;
        SqlDataReader dr = CmdFactory.ExecuteDataReader(sqlstr);
类:
复制内容到剪贴板
代码:
public static SqlDataReader ExecuteDataReader(string sqlstr)
        {
            cn.Open();
            SqlCommand cm = new SqlCommand();
            cm.CommandText = sqlstr;
            cm.Connection = cn;
            try
            {
                SqlDataReader dr = cm.ExecuteReader();
                return dr;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                cm.Dispose();
                cn.Close();
            }
        }
请问怎样才能返回一条记录的所有字段值 并且取出呢?
FLASH  诚征友链
我现在直接在类中生成个数组返回了....
FLASH  诚征友链
既然是取一个值而已可以返回那个值

            finally
            {
                cm.Dispose();
                cn.Close();
            }
去掉试试,忘记datareader是不是本地数据了
你风流,我俊雅,和你同年少,两情深,罚下愿,再不去跳槽。
SqlDataReader是需要连接的数据流.你最后关闭了连接.当然会报"阅读器关闭时 MetaData 的尝试无效"错了.

如果只是返回一个数据,可以定义为object类型.
复制内容到剪贴板
代码:
public static object Executeobject(string sqlstr)
        {
            object ReturnObj=null;
            cn.Open();
            SqlCommand cm = new SqlCommand();
            cm.CommandText = sqlstr;
            cm.Connection = cn;
            try
            {
                SqlDataReader dr = cm.ExecuteReader();
                if(dr.HasRows) ReturnObj=dr[0];
                return ReturnObj;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                cm.Dispose();
                cn.Close();
            }
        return ReturnObj;
        }
评词党,欢迎加入友链接 http://www.pingcd.com/

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!