Laden...

Select liefert falschen Wert

Erstellt von Ploetzi vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.031 Views
Ploetzi Themenstarter:in
313 Beiträge seit 2006
vor 12 Jahren
Select liefert falschen Wert

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).

6.911 Beiträge seit 2009
vor 12 Jahren

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!"

849 Beiträge seit 2006
vor 12 Jahren

Hallo gfoidl,

dass das SQL nicht per String-Operationen zusammengebaut werden soll

wäre mir neu das das mit tabellennamen funktioniert..

2.207 Beiträge seit 2011
vor 12 Jahren

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

16.807 Beiträge seit 2008
vor 12 Jahren

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 😃

2.207 Beiträge seit 2011
vor 12 Jahren

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

6.911 Beiträge seit 2009
vor 12 Jahren

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!"

G
538 Beiträge seit 2008
vor 12 Jahren

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)