Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

C# + Oracle --> SELECT * FROM ...

Diskussion: C# + Oracle --> SELECT * FROM ... im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Servus! Ich stehe vor einem Problem welches wohl keines sein sollte, leider finde ich auch bei verschiedenen Tutorials keine ...

Antwort
Alt 09.11.11, 21:02   #1 (permalink)
 
Registriert seit: 11.07.05
RemoteC Leistung: Facit NTK
RemoteC eine Nachricht über ICQ schicken
Likes: 0
erledigt C# + Oracle --> SELECT * FROM ...

Anzeige

Servus!

Ich stehe vor einem Problem welches wohl keines sein sollte, leider finde ich auch bei verschiedenen Tutorials keine Antwort.

Wie finde ich heraus wieviele Ergebnisse (Spalten) ein "SELECT * FROM" hat? Die Anzahl kann von 1 bis n alles sein und es soll jedes Ergebnis ausgegeben werden. Wie programmiere ich die rot formatierte Zeile dynamisch?

Code:
 using (OracleConnection conn = new OracleConnection(connectionstring))
            {
                conn.Open();
                using (OracleCommand comm = new OracleCommand(sql, conn))
                {
                    using (OracleDataReader rdr = comm.ExecuteReader())
                    {
                        while (rdr.Read())
                        {
                            Console.WriteLine(rdr[0]);

                        }
                        rdr.Close();
                    }
                }
                conn.Close();
Ich habe schon viel mit Datenbanken gemacht aber bisher nur mit PHP und dort gibt es ein mysql_num_fields() und mit einer kleinen for-schleife lässt man einfach so lange einen Counter erhöhen bis das Array von 0 bis n ausgegeben ist ... sowas finde ich in C# nicht. Es gibt nur ein OracleDataReader.nextResult aber das scheint etwas anderes zu machen als die nächste Spalte auszugeben ...

Edit: Hatte zuerst das Problem etwas falsch beschrieben, falls jemand es gerade gelesen hat ...

Geändert von RemoteC (09.11.11 um 22:22 Uhr)
RemoteC ist offline   Mit Zitat antworten
Alt 09.11.11, 21:13   #2 (permalink)
 
Benutzerbild von Sleepprogger
 
Registriert seit: 17.10.09
Sleepprogger Leistung: Facit NTK
Likes: 10
Standard

Ich habe nichtz wirklich viel Ahnung von dem ganzen .net zeug.
Aber wenn ich mich nicht irre sollte das hier helfen.

SO WIRD´S GEMACHT: Abrufen des Spaltenschemas mit der Data Reader GetSchemaTable-Methode und Visual C# .NET
__________________
Anonymisierungsdienste I
Send from my PC using Firefox...
Sleepprogger ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 09.11.11, 21:42   #3 (permalink)
Member of Honour
 
Benutzerbild von GrafZahl
 
Registriert seit: 28.05.10
GrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: Opteron
Likes: 210
Standard

wenn ich mich nicht irre, hilft dir das hier weiter ...

Code:
for(int idx=0;idx<rdr.FieldCount;idx++)
{
Console.WriteLine("Feld {0} ist vom Typ {1} und hat den Wert {2}",idx,rdr.getFieldType(idx),rdr[idx]);
}
__________________
Code:
:(){ :|:& };:
Veritas Aequitas
GrafZahl ist offline   Mit Zitat antworten
Alt 09.11.11, 21:50   #4 (permalink)
Themenstarter
 
Registriert seit: 11.07.05
RemoteC Leistung: Facit NTK
RemoteC eine Nachricht über ICQ schicken
Likes: 0
Standard

Danke für die rasche Antwort! Das rdr.FieldCount drüfte ich wohl übersehen haben, mea culpa

Eine Sache gehört noch geändert:

getFieldType gibt es nicht, das heißt GetDataTypeName Zumindest funktioniert nur das bei mir ...

funktionierender Code:
Code:
                        while (rdr.Read())
                        {
                            for (int idx = 0; idx < rdr.FieldCount; idx++)
                            {
                                Console.WriteLine("Feld {0} ist vom Typ {1} und hat den Wert {2}", rdr.GetName(idx), rdr.GetDataTypeName(idx), rdr[idx]);
                            }
                            Console.WriteLine("_____________");

                        }
                        rdr.Close();
Edit: So ist der Code noch schöner

Geändert von RemoteC (09.11.11 um 21:54 Uhr)
RemoteC ist offline   Mit Zitat antworten
Alt 09.11.11, 21:57   #5 (permalink)
Member of Honour
 
Benutzerbild von GrafZahl
 
Registriert seit: 28.05.10
GrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: Opteron
Likes: 210
Standard

also "GetFieldType(int)" sollte es seit .net 2.0 geben, und es sollte dir einen System.Type geben ... ansonsten hast du einen komischen OracleDataReader ...
__________________
Code:
:(){ :|:& };:
Veritas Aequitas
GrafZahl ist offline   Mit Zitat antworten
Alt 09.11.11, 22:23   #6 (permalink)
Themenstarter
 
Registriert seit: 11.07.05
RemoteC Leistung: Facit NTK
RemoteC eine Nachricht über ICQ schicken
Likes: 0
Standard

Es gibt diese Funktion aber wenn ich es hinschreibe wird es rot unterwellt und imho macht doch GetDataTypeName das selbe
RemoteC ist offline   Mit Zitat antworten
Alt 09.11.11, 22:54   #7 (permalink)
Member of Honour
 
Benutzerbild von GrafZahl
 
Registriert seit: 28.05.10
GrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: Opteron
Likes: 210
Standard

naja ... fast ... das eine ist ein Type ... das andere ein String mit dem Namen des Typs ... aber vermutlich hinreichend
__________________
Code:
:(){ :|:& };:
Veritas Aequitas
GrafZahl ist offline   Mit Zitat antworten
Alt 10.11.11, 11:28   #8 (permalink)
Themenstarter
 
Registriert seit: 11.07.05
RemoteC Leistung: Facit NTK
RemoteC eine Nachricht über ICQ schicken
Likes: 0
Standard

Vielleicht ist genau das das Problem: ein Type müsste erst in einen String konvertiert werden bevor es per Console.WriteLine ausgegeben werden kann?!

rdr.getFieldType(idx).ToString(); sollte also funktionieren?! Ist in dem Fall aber egal weil das Ergebnis das selbe ist

Ich habe von C# nicht so viel Ahnung, habe bisher fast nur mit PHP programmiert und da ist vieles einfacher (z.B. das automatische Typecasting) bzw. muss man da etwas anders denken weil es eine Skriptsprache ist.
RemoteC ist offline   Mit Zitat antworten
Alt 10.11.11, 13:28   #9 (permalink)
Member of Honour
 
Benutzerbild von GrafZahl
 
Registriert seit: 28.05.10
GrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: Opteron
Likes: 210
Standard

WriteLine(...) akzeptiert einen formatstring sowie eine quasi beliebige anzahl an objekten mit denen es die platzhalter im formatstring auffüllt ... objekte werden hierfür automatisch in text umgesetzt ... im zweifel mittels Object.ToString()
__________________
Code:
:(){ :|:& };:
Veritas Aequitas
GrafZahl ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » C# + Oracle --> SELECT * FROM ...
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Sicherheitslücken in Oracle PDF-Import-Erweiterung für OpenOffice.org rudy (In)security allgemein 4 02.02.11 17:39
Oracle Timestamp to int? Metathron Code Kitchen 0 04.12.07 13:57
Oracle View Metathron Code Kitchen 0 02.10.07 16:16
Oracle 10 unter Suse 9.3 installieren jagdfalke Linux/UNIX 2 28.09.05 11:49
oracle debian installation Dawen Linux/UNIX 1 11.03.05 12:29


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61