Spaltennummer aus ODBC Datenbanktabelle auslesen

CopWorker

Erfahrenes Mitglied
Hallo zusammen,

bin gerade dabei mit einem Select Statement Werte aus ausgewählten Spalten auszulesen.
Das ist alles kein Problem. Auch ist es mir gelungen den Spaltennamen zu erfahren aus der die Werte stammen.
C#:
//Transaktion ausführen
OdbcDataReader sqlReader = clCommand.ExecuteReader();
iColumns = sqlReader.FieldCount;

//Selectierte Tabellennamen in Ergebnisliste übernehmen
for (int i = 0; i < iColumns; i++)
{
      strTemp = sqlReader.GetName(i);
      sSqlResult.liColumnName.Add(strTemp);
}

Ich brauche aber die Spaltennummern aus der die selektierten Werte stammen.
Die Funktion sqlReader.GetOrdinal(); gibt mir nur das Listenfeld zurück von der Liste
in der die selektierten Werte reingeschrieben wurden.

C#:
//Transaktion ausführen
sqlReader = clCommand.ExecuteReader();
iColumns = sqlReader.FieldCount;

//Selectierte Tabellennamen in Ergebnisliste übernehmen
     for (int i = 0; i < iColumns; i++)
     {
          strTemp = sqlReader.GetName(i);
          sSqlResult.liColumnName.Add(strTemp);

          sSqlResult.liColumnNr.Add(sqlReader.GetOrdinal(strTemp));
     }

Ich brauch aber die Spaltennummern so wie sie in der Datenbanktabelle benummert sind.

Vielleich hat jemand Erfahrung ODBC Datenbanken.

Vielen Dank
Grüße von CopWorker
 

Spyke

Premium-User
Meines Wissens nicht möglich.
Solche ein zurückgegebener Wert aus einer SELECT Spalte kann ja alles möglich sein, eine zurückgegebene Spalte muss nicht unbedingt auch eine Datenbankspalte sein.
Und warum brauchst du das?
 

CopWorker

Erfahrenes Mitglied
Hallo Spyke,
beim Auslesen einer Datenbanktabelle gebe ich dem Reader() für jede Ziele Variable vom Typ "object[]" mit. Jetzt muss ich ja irgendwann eine eingelesenen Werte auf meine Datenhaltung zurückschreiben.
Dazu muss ich wissen welcher Wert aus welcher Spalte stammt um in dann gezielt ins richtige Format zu konvertieren und der entsprechenden Variablen zuordnen kann.

Hallo Zvoni,
in den Tabellen Informationen war ich auch schon unterwegs.
Geht bei ODBC Datenbanken so:
DataTable dt = sqlReader.GetSchemaTable();
Kann leider nichts brauchbares auslesen.

Aber trotzdem vielen Dank für die Tipps.
Grüße von CopWorker
 

Zvoni

Erfahrenes Mitglied
Bin kein Dot.NET-ler
Sofern du Zugriffsrechte hast, kann man aus INFORMATION_SCHEMA direkt per SQL auslesen
 

CopWorker

Erfahrenes Mitglied
Hallo an alle,

es ist bloß schade, dass C++ diesen Vorgang beherrscht.
C# anscheinend nicht mehr.
Alles besser. Stimmt so nicht.

Trotzdem vielen Dank.
Grüße von CopWorker
 

Neue Beiträge