Ich führe eine Reihe von SQL-Abfragen als Batch und dann alle Ergebnismengen zurück in einem Batch. Die Art und Weise, wie mein Code derzeit zusammengestellt wird, wird übersprungen. Nun, da ich das weiß, könnte ich einfach eine andere Aussage außerhalb meiner Schleife einwerfen, die das erste Ergebnis erfasst, aber ich frage mich, ob es eine elegantere Lösung für dieses Problem gibt.Wie man am besten über einen Batch von Ergebnissen mit einem C# DbDataReader Schleife
Hier einige sudo-Code, was los ist:
DbDataReader reader= /*some stuff that returns a batch of results...*/;
while (reader.NextResult())
{
while (reader.Read())
{
if (!reader.IsDBNull(0))
{
//do things with the data....
}
}
}
Jetzt hätte ich erwartet, dass Nextresult(), die Sie das erste Ergebnis geht das erste Mal, wenn Sie es nennen, das ist, was Read() scheint machen. Was es jedoch tatsächlich zu tun scheint, bringt Sie beim ersten Anruf zum zweiten Ergebnis. Bin ich Missverständnis, wie Sie diese Methode verwenden, sind zu erwarten, oder sind Sie wirklich einige, wie das zu erwarten haben folgende Möglichkeiten:
DbDataReader reader= /*some stuff that returns a batch of results...*/;
//this deals with the row in the the very first result
while (reader.Read())
{
if (!reader.IsDBNull(0))
{
//do things with the data....
}
}
//this deals with the rest of the rows...
while (reader.NextResult())
{
while (reader.Read())
{
if (!reader.IsDBNull(0))
{
//do exact same things with the data....
//is this not pretty klugey?
}
}
}
Diese mich als faul Programmierstil trifft, aber ich sehe keinen Weg darum herum . Kennt jemand eine elegantere Lösung dafür?
Beat mich um 4 Sekunden! –
ich fühle mich albern - danke, ich weiß nicht, warum ich nie daran gedacht habe ... –
Ich frage mich immer noch, ob sweeney nicht tiefer gehen sollte, wenn man darüber nachdenkt. Ich kann mir nicht viele Situationen vorstellen, in denen ich mehrere Datensätze abrufen und genau dasselbe mit ihnen machen würde. –