Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Select liefert falschen Wert
Ploetzi
myCSharp.de - Member

Avatar #avatar-2940.gif


Dabei seit:
Beiträge: 320

Themenstarter:

Select liefert falschen Wert

beantworten | zitieren | melden

verwendetes Datenbanksystem: <MYSQL>

     MySqlCommand command = _connection.CreateCommand();
        command.CommandText = "select ID,Color,Rule,Message,IP_Hostname,AlarmTime,Status,Acknowledged,User,Comment from " + tabelle;
        MySqlDataReader reader = command.ExecuteReader();
        List<Actual> actualdataget = new List<Actual>();
        while (reader.Read())
        {
            
            Actual ubs1Actual = new Actual
                                 {
                                     Id = reader.GetValue(0).ToString(),
                                     Color = reader.GetInt32(1).ToString(),
                                     Rule = reader.GetValue(2).ToString(),
                                     Message = reader.GetValue(3).ToString(),
                                     IpHostname = reader.GetValue(4).ToString(),
                                     AlarmTime = reader.GetValue(5).ToString(),
                                     Status = reader.GetValue(6).ToString(),
                                     Acknowledged = reader.GetValue(7).ToString(),
                                     User = reader.GetValue(8).ToString(),
                                     Comment = reader.GetValue(9).ToString()
                                 };
            actualdataget.Add(ubs1Actual);
        }
        reader.Close();
        return actualdataget;


Die Color ist aber 0 oder 1 obwohl, in der Datenbank (siehe angehängtes Bild).
Attachments
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7581
Herkunft: Waidring

beantworten | zitieren | melden

Hallo Ploetzi,

Edit: nachfolgender Absatz gilt nicht für Tabellennamen.

mittlerweile solltest du es schon mitbekommen haben, dass das SQL nicht per String-Operationen zusammengebaut werden soll, sondern entsprechend [Artikelserie] SQL: Parameter von Befehlen gearbeitet werden soll. Darauf wurdest du ja schon mehrmals hingewiesen.
Ebenso solltest du wissen, dass Bilder direkt angehängt werden sollen und nicht bei einem externen File-Hoster. Ich habs angehängt.

Auch scheint mir die Klasse Actual schon recht merkwürdig - für die einzelnen Eigenschaften könnten sicher andere Typen außer String auch verwendet werden.

Für das Problem hab ich keine konkrete Lösung, aber ich denke wenn du "sauber" arbeitest wird das Problem auch gar nicht mehr auftauchen.

BTW: Ev. wäre ein (typisierter) O/R-Mapper eine Alternative für dich.


mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Hallo gfoidl,
Zitat
dass das SQL nicht per String-Operationen zusammengebaut werden soll

wäre mir neu das das mit tabellennamen funktioniert..
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von unconnected am .
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2461
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

Hallo zusammen,

auch wenn das vielleicht jetzt in eine Grundsatzfrage rutscht (und das ist nicht meine Absicht): Ist es üblich in ein SQL-Statement die Tabelle variabel zu machen? Dann stimmt doch schon etwas anderes nicht, oder?

Gruss

Coffeebean
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16232

beantworten | zitieren | melden

Zitat von Coffeebean
Ist es üblich in ein SQL-Statement die Tabelle variabel zu machen?

Bei Mandanten-Orientierten-Systemen ist es nicht unüblich; wobei hier eher / besser die Datenbank variabel ist. Aber auch variable Tabellen ist hier eine Möglichkeit - aber die schlechtere.
Sollte aber auch schon genug Diskussion sein :-)
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2461
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

Hallo zusammen,

danke Abt für die Antwort. Wäre hier in dem Fall aber dann nicht eine Stored procedure besser, in die man den Tabellennamen als Parameter übergeben kann?

Gruss

Coffeebean
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7581
Herkunft: Waidring

beantworten | zitieren | melden

Hallo unconnected,

danke - das ist mir auch neu ;-)


Hallo Ploetzi,

auch wenn hier Parameter nicht passen, solltest du das anders lösen. Möglichkeiten wurden in diesem Thema auch schon genannt. So ist es potentiell zu gefährlich und v.a. unsauber.


mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
Grumbler85
myCSharp.de - Member



Dabei seit:
Beiträge: 550
Herkunft: Rheingau Taunus

beantworten | zitieren | melden

Nur so am Rande (abgesehen von den ganzen Bemerkungen..)
Die Color ist das einzige Element, das du nicht mit GetValue liest.
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)
private Nachricht | Beiträge des Benutzers