Hallo Miteinander,
nachdem mir bei meiner letzten Frage so schnell geholfen wurde, bin ich so umverschämt und stell noch eine (hoffe auch, dass ich das richtige Unterforum erwischt habe). Also:
Ich hab mir eine Connection zu einer Access Datenbank selbst geschrieben. Also ohne Databindings, Adapter, Dataset etc. (bin darin im neuem VisualStudio noch nicht so geübt...).
Auch das Command hab ich mir selbst geschrieben, und zwar nach diesem Schema:
comm.CommandText = "SELECT name, betrag FROM tb_daten WHERE id = 1";
Jetzt will ich die beiden Daten (name und betrag) vom Datensatz mit der id 1 an Variablen übergeben. Sagen wir mal an string sp_name und double sp_betrag.
Mir ist aber leider entfallen, wie genau das geht. Müsste ja irgendwie mit Parametern [0], [1] usw. hinhaun, bin im moment aber ziemlich ratlos.
Kann mir vielleicht jemand auf die Sprünge helfen?
Mit freundlichen Grüßen
Schau mal in der Dokumentation nach IDbCommand, IDataReader und IDataRecord. Dort ist das ausführlich erklärt, deshalb hier nur ein kleines Beispiel:
IDbCommand command;
IDataReader reader = command.ExecuteReader();
while (reader.Read()) // gehe zum nächsten Tupel solange vorhanden
{
string name = reader.GetString(0); // hole Wert aus 1. Spalte
double betrag = reader.GetDouble(1); // hole Wert aus 2. Spalte
}
das war genau, wonach ich gesucht habe, vielen dank!
Hallo,
da ich ein ähnliches Problem hab, pack ich mal meine Frage hier rein 😉
ich will auch mit reader.GetString(0) den Inhalt aus einem Feld holen, allerdings bekomme ich eine "System.InvalidCastException: Die angegebene Umwandlung ist ungültig." Fehlermeldung, wenn das Feld leer ist.
Da ich aber viele Spalten habe, will ich nicht jedes mal ne Try-Catch-Anweisung schreiben, gibt es vielleicht eine Abfrage ob das Feld leer ist, damit ich dann die GetString nicht auf dieses Feld anwende?
Vielen Dank,
Varrius
Mit reader.IsDBNull(index) kannst du abfragen ob der Wert null ist.
danke 🙂
ok, nun hat sich aber ein neuer Fehler eingeschlichen 😉
KID_Edit ist eine TextBox, wobei folgendes Problemlos klappt, wenn das Feld gefüllt ist:
KID_Edit.Text = reader.GetString(0);
für den Fall, dass das Feld leer ist, habe ich nun folgendes Konstrukt gebastelt:
if (reader.IsDBNull(0)) KID_Edit.Text = "";
else KID_Edit.Text = reader.GetString(0);
bekomme ich folgende Fehlermeldung:
System.InvalidCastException: Die angegebene Umwandlung ist ungültig.
at System.Data.Odbc.OdbcDataReader.GetString(Int32 i)