函数如下:
public SqlDataReader GetMemberInfo(int intID)
{
//定义数据库查询语句
string sql="select * from Members where id=" + intID;
//定义数据库的Connection and Command 
SqlConnection myConnection = new SqlConnection(SqlHelper.DBCONNECTIONSTRING);
SqlCommand myCommand = new SqlCommand(sql,myConnection);
//打开数据库连接
myConnection.Open();
//执行查询
SqlDataReader dr = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
//返回结果集
return dr;
}
调用如下:
recu = user.GetMemberInfo(UserID);
if (recu.Read())
  LabelUserTradeCode.Text = recu["MemNo"].ToString().Trim();
recu.Close();
函数返回的是SqlDataReader,如何在调用处关闭函数中打开的数据库连接呢?谢谢!

解决方案 »

  1.   

    recu.Close();
    的同时就会关闭连接
      

  2.   

    因为这个rader有CommandBehavior.CloseConnection属性.
      

  3.   

    一般情况下如果你设置CommandBehavior.CloseConnection, SqlDataReader会在.Read()= false的时候关闭连接,但是有人说不保险,所有加recu.Close()是保险的做法, reader关闭的时候就会关闭connection.
      

  4.   

    你用了CommandBehavior.CloseConnection属性,就会自动关闭链接了嘛。
      

  5.   

    直接在函数部分关闭不就行了,干嘛非要到调用处关闭呢
    ======================
    调用处还能read();吗?
    recu.Close();
    的同时就会关闭连接
    ============
    您的意思是,现在就可以吗?不用加处理?因为这个rader有CommandBehavior.CloseConnection属性.
    ========================
    不太明白,请解释下。
      

  6.   

    你用了CommandBehavior.CloseConnection
    你在关闭datareader时就关闭了
      

  7.   

    http://support.microsoft.com/kb/310369/zh-cnhttp://msdn2.microsoft.com/zh-cn/library/system.data.commandbehavior(VS.80).aspx