Retornando um SqlDataReader
Eu tenho este código:
<code>public static SqlDataReader GetGeneralInformation ( int RecID ) { using ( var conn = new SqlConnection( GetConnectionString() ) ) using ( var cmd = conn.CreateCommand() ) { conn.Open(); cmd.CommandText = @"SELECT cs.Status, cs.Completed FROM NC_Steps s INNER JOIN NC_ClientSteps cs ON cs.RecID = s.RecID WHERE cs.ClientID = 162 AND s.RecID = @value"; cmd.Parameters.AddWithValue( "@value", RecID ); using ( var reader = cmd.ExecuteReader() ) { if ( reader.Read() ) { return reader; } return null; } } } </code>
Como faço referência a isso?
Eu tentei isso, mas não funciona.
<code>SqlDataReader reader = GeneralFunctions.GetGeneralInformation(); </code>
Também como eu leria do leitor?
<code>Reader.GetString( reader.GetOrdinal( "Status" ) ) </code>
Editar:
Agora estou recebendo o seguinte erro:
Detalhes da exceção: System.NullReferenceException: referência de objeto não definida para uma instância de um objeto.
Aqui está o código atualizado:
<code>public static IEnumerable<IDataRecord> GetGeneralInformation ( int ClientID ) { using ( var conn = new SqlConnection( GetConnectionString() ) ) using ( var cmd = conn.CreateCommand() ) { conn.Open(); cmd.CommandText = @"SELECT i.GoLiveDate, i.FirstBonusRun, i.TechFName, i.TechLName, i.TechEmail, i.TechPhone, i.WebISPFName, i.WebISPLName, i.WebISPEmail, i.WebISPPhone, i.FullFillFName, i.FullFillLName, i.FullFillEmail, i.FullFillPhone, d.FName, d.LName, d.HomePhone, d.Email FROM NC_Information i INNER JOIN Distributor d ON d.DistID = i.ClientID WHERE clientID = @value"; cmd.Parameters.AddWithValue( "@value", ClientID ); using ( var reader = cmd.ExecuteReader() ) { while ( reader.Read() ) { yield return reader; } yield return null; } } } protected void Page_Load(object sender, EventArgs e) { IEnumerable<IDataRecord> reader = GeneralFunctions.GetGeneralInformation( (int)Session[ "DistID" ] ); //string result = GeneralFunctions.GetGeneralInformation( Globals.GeneralInformation ).First()[ "Status" ].ToString(); } </code>