[ASPX]DataReader

fluessig

Royal Blue
Ich möchte aus einer Access-Datenbank ein Textfeld auslesen. Wenn in dem Feld schon ein Text steht funktioniert das wunderbar, nur wenn das Feld leer ist bekomme ich immer eine Fehlermeldung.
Code:
OleDbDataReader reader_q = cmd_q.ExecuteReader();
...
while(reader_q.Read())
{
 ...
 txt_Sonst.Text = (string)reader_q["TextAnt"];
 ...

Wenn im Textfeld in der DAtenbank nichts steht, so kommt:

[error]
System.InvalidCastException: Die angegebene Umwandlung ist ungültig.
[/error]

Hab schon versucht den Fehler mit if (reader_q["TextAnt"] == null)... abzufangen, hat leider auch nichts gebracht, denn der reader gibt etwas zurück nur leider weiß ich nicht was und es lässt sich auch nicht zu einem String konvertieren.
 

krypta

Erfahrenes Mitglied
ich benutze zwar eigentlich nie "direkt" den reader fuer solche aufgaben, aber evtl hilft dir ja folgendes:

Code:
if( reader_q["TextAnt"].ToString().Length > 0 )
   txt_Sonst.Text = reader_q["TextAnt"].ToString();
else
   // blabla

hoffe geholfen zu haben ...
 

fluessig

Royal Blue
Was würdest du denn vorschlagen anstatt des Readers zu benutzen?
Ich fand das Auslesen mit der while Schleife ganz praktisch, bin aber stets für Alternativen offen.

Ich habs nicht ganz nach deiner Methode gemacht, aber jetzt klappts. Hab die Typkonvertierung einfach geändert. Statt (string)reader...
reader_q...ToString() und damit geht's
 
Zuletzt bearbeitet:

krypta

Erfahrenes Mitglied
soll eigentlich kein "vorschlag" sein, sondern eher eine andere variante:

kein langes blabla, gleich zum thema:
Code:
[...]
OleDbDataAdapter myCmd = new OleDbDataAdapter(strQueryString,m_interalOleDbConnection);

dsRet = new DataSet();

myCmd.Fill(dsRet,"QueryResult");
[...]

für datenbank-operationen jeglicher art (oledb, odbc, ...) habe ich eine eigene klasse entwickelt (fürs connecten, disconnecten, execute(non)query wie auch fehlerroutinen). ich glaube auch mal eine solche klasse im netz gefunden zu haben (codeproject.com, c-sharpcorner.com, ... ). ansonsten könnte ich, wenn interesse besteht, die oledb-variante dieser klasse bereitstellen (leider "finde" ich den "grossen bruder" nicht, die änderungen sind aber kein prob =)

rgds