Laden...

SQL numeric(1,0) in decimal C#casten

Erstellt von susisorglos vor 6 Jahren Letzter Beitrag vor 6 Jahren 2.104 Views
susisorglos Themenstarter:in
43 Beiträge seit 2008
vor 6 Jahren
SQL numeric(1,0) in decimal C#casten

verwendetes Datenbanksystem: <SQL 2014>

Hi Community,

ich greife mittels Dapper auf eine SQL Datenbank zu.
Aus einer Tabelle Person hole ich eine Variable 'geschl'.
In der SQL Tabelle hat diese Variable 'geschl' das Format (numeric (1,0),null)
Die Variable in C# habe ich als 'decimal' deklariert.

 public decimal geschl { get; set; } 

Eine globale Variable Geschlecht ist vorab auf 1 gesetzt.

Person obj = cboKind.SelectedItem as Person;
            GlobaleVariablen.Geschlecht = obj.geschl;

Nach Abfrage des ersten Datensatzes der Tabelle Person wird die vordefinierte Variable Geschlecht
mit 0 überschrieben, obwohl die in der Tabelle enthaltene Variable 'geschl' 1 enthält.

Wer kann mir einen Tipp geben, wie ich dieses Problem löse?

Vielen Dank!

susi

VS 2017 Community

T
2.223 Beiträge seit 2008
vor 6 Jahren

Warum nimmst du nicht direkt int?
Geschlecht würde ich hier eher als Enum definieren oder Alternativ per Guid Referenzieren aus einer entsprechenden Tabelle mit allen möglichen Einträgen.
Decimal und Numeric sind in diesem Kontext eher der falsche Ansatz.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

susisorglos Themenstarter:in
43 Beiträge seit 2008
vor 6 Jahren

@T-Virus

Vielen Dank für die Antwort.
Die Struktur der Datenbank ist mir vorgegeben.
Ich muß auf 'geschl' Typ (numeric(1,0),null) zugreifen.

VS 2017 Community

16.830 Beiträge seit 2008
vor 6 Jahren

Demjenigen, der numeric(1,0) für sowas missbraucht, würde ich auf die Finger hauen.

Vermutlich musst Du einen CAST in Deinen SQL Query einbauen, der numeric(1,0) zu einem Integer macht.
Dann sollte Dapper damit direkt nen Integer lesen können und Du kannst auf Decimal verzichten.

susisorglos Themenstarter:in
43 Beiträge seit 2008
vor 6 Jahren

@Abt
Danke für die klaren Worte.
So werde ich es machen.
Wenn man das Ziel kennt, kann der Weg auch mal sandig sein. 😮)

Die Datenbank hat ihre Zeit auf dem Buckel...

susi

VS 2017 Community

susisorglos Themenstarter:in
43 Beiträge seit 2008
vor 6 Jahren
SELECT geschl, CAST(geschl AS Integer) geschl_int FROM Person

---susi---

Hinweis von Coffeebean vor 6 Jahren

Bitte benutze die richtigen Code-Tags [Hinweis] Wie poste ich richtig?

VS 2017 Community

susisorglos Themenstarter:in
43 Beiträge seit 2008
vor 6 Jahren

@T-Virus
Ich muß mich korrigieren.
Nicht Dapper wars, sondern ich, der Depp.
Ich habe doch glatt vergessen, die Abfrage um den Feldnamen 'geschl' zu erweitern. 8o

Dapper kann numeric((1,0)null) in int umwandeln.

VS 2017 Community

16.830 Beiträge seit 2008
vor 6 Jahren

Daran hatte ich auch keine Zweifel. Aber auf Anwendungsseite hier mit Integer zu arbeiten ist trotzdem wohl die bessere Idee.