ho questo codice:Restituzione di uno SqlDataReader
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;
}
}
}
Come faccio riferimento a questo?
Ho provato questo ma non funziona.
SqlDataReader reader = GeneralFunctions.GetGeneralInformation();
Inoltre, come leggerei dal lettore?
Reader.GetString(reader.GetOrdinal("Status"))
Edit:
Ora sto ottenendo il seguente errore:
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Ecco il codice aggiornato:
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();
}
Perché non riesci a leggerlo come qualsiasi altro SqlDataReader? Fallisce? Se è così, è a causa delle tue istruzioni 'using'. Stai chiudendo la connessione prima di usare il lettore. –
@JohnSaunders Sto cercando di restituire il lettore stesso. Non sono sicuro del modo migliore per realizzare ciò che voglio fare. Fondamentalmente è un modulo di asp.net che viene popolato con i dati di un database. L'unico modo in cui potrei pensare di farlo è restituire il lettore stesso in modo da poter inserire le informazioni nelle caselle di testo di asp.net. –
È possibile restituire un oggetto popolato dal lettore. E tu non hai ancora detto cosa non ha funzionato. –