SQL Abfrage ohne Resultat behandeln

23/05/2008 - 23:39 von Walser Mark | Report spam
hallo ng

Aus einer Sub rufe ich eine private Function auf.
Diese macht mir einen Select auf der DB.
Es kann nun sein, dass das Resultat null / leer, keinen Inhalt bringt.
Jetzt wird eine Exception geworfen.
Das ist soweit gut und recht, aber die Exception wird auch an die Sub
weitergegeben.
Dies zwingt mein Programm zum Abbruch.

Wie kann ich das abfangen, dass bei einem leeren Recordset im Ablauf
trotzdem weiter gearbeitet werden kann.
Sprich nur die Exception in der Function verarbeitet wird

Try
StudentID = dataReaderStudent("studentid")
Catch ex As Exception
MsgBox(ex.ToString())
End Try


DB RM:
Es gibt in der DB drei Tabellen
- Person
- Dozent
- Student

Ist die Person ein Student, steht seine ID in der Tabelle Student
das gleiche gilt für den Dozenten.
Wird folgender Select ausgeführt, kann es sein, dass keine ID als Resultat
zurückkommt.
Das verursacht das Problem im Code!!!

select stud.id as studentid from person as pers
inner join student as stud On pers.id = stud.id
where loginname = 'muster'


Danke für die Hilfe

Gruss Mark
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
24/05/2008 - 00:59 | Warnen spam
Hallo Mark,

"Walser Mark" schrieb:

Das ist soweit gut und recht, aber die Exception wird auch an die Sub weitergegeben.



Nö. Wenn Du die Exception behandelst, wird da nichts (automatisch) weitergegeben.

Dies zwingt mein Programm zum Abbruch.



Dann ist dein Programm aber, sagen wir, ... suboptimal.

Sprich nur die Exception in der Function verarbeitet wird

Try
StudentID = dataReaderStudent("studentid")
Catch ex As Exception
MsgBox(ex.ToString())
End Try



Das steht in der Funktion? Dann sollte das genau so klappen wie Du es
haben willst.

Wenn Du natürlich nach dem End Try (oder in deiner Methode) auf den
DataReader zugreifst, schlàgt das ebenso fehl, weil der auch spàter
nicht gefüllt ist. Daselbe gilt, falls Du mit der Rückgabe, die in
StudentID drin steht (was in dem Fall Nothing wàre), weiterarbeiten
willst und voraussetzt, dass da ein Wert drinsteht.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen