Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Mysql und Postgresql...


tomycat - So 22.11.15 12:21
Titel: Mysql und Postgresql...
hallo,
in mysql habe ich es hinbekomme aber nicht in postgresql...

Mysql...Funkt super !!!

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
mcon.Open();
s = "select * from artikel.allgemein where barcode=" + (eingabe);
mcd = new MySqlCommand(s, mcon);
mdr = mcd.ExecuteReader();
if (mdr.Read())
{
    barcodetext.Text = "";
    labellabel.Text = eingabe;
    preisx.Text = mdr.GetString("Preis");
    bildnummerx.Text = mdr.GetString("bildnummer");
}



C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
NpgsqlCommand command = new NpgsqlCommand(SQL, conn);
NpgsqlDataReader dr = command.ExecuteReader();               
if (dr.Read())
{
    preisx.Text = dr.GetString("Preis");
    bildnummerx.Text = dr.GetString("bildnummer");
}

Bei Preis und bei bildnummer sagt VS:konvertierung von int in string nicht möglich

Das wäre jetzt meine unzufriedene Notlösung.

C#-Quelltext
1:
2:
3:
4:
5:
while (dr.Read())
{
    preisx.Text = dr[2].ToString();
    bildnummerx.Text = dr[3].ToString();
}

Bin für jeden Tip dankbar.

Moderiert von user profile iconTh69: Code- durch C#-Tags ersetzt


Th69 - So 22.11.15 13:37

Hallo,

ich denke mal, du hast die beiden Felder in der DB jeweils als Zahlendatentyp deklariert (und nicht als String)?!
Dann probiere mal

C#-Quelltext
1:
2:
3:
preisx.Text = dr.GetDecimal("Preis").ToString();
bildnummerx.Text = dr.GetInt32("bildnummer").ToString();
}

Das Auslesen aus der DB und das Zuweisen zu einem Steuerelement sind zwei verschiedene Dinge.

Noch besser wäre es allerdings, wenn du die Daten in einer eigenen Datenklasse halten würdest und dann diese (z.B. per DataBinding) den Steuerelementen zuweist (GUI und Persistenz sollten voneinander nichts wissen - Stichwort: 3-Schichtenarchitektur [https://de.wikipedia.org/wiki/Schichtenarchitektur#Drei-Schichten-Architekturen_innerhalb_von_Software-Systemen]).


tomycat - Mi 25.11.15 19:18


C#-Quelltext
1:
preisx.Text = dr.GetDecimal("Preis").ToString();                    

der Preis hat eine rote Welle ?!
Dass wir nicht aneinander vorbei reden, Preis ist die Spalte.

Moderiert von user profile iconTh69: C#-Tags hinzugefügt


Th69 - Mi 25.11.15 19:49

Dann schau doch einfach in die Doku: SqlDataReader.GetDecimal-Methode (Int32) [https://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqldatareader.getdecimal%28v=vs.110%29.aspx] (wie das genau bei MySql aussieht, weiß ich nicht - ich bin davon ausgegangen, daß die anderen Get-Methoden auch einen string nehmen, wie bei der von dir gezeigten GetString-Methode) oder schau dir per Intellisense die Parameter der Methode an.

Also entweder:

C#-Quelltext
1:
dr.GetDecimal(dr.GetOrdinal("Preis")).ToString()                    
oder

C#-Quelltext
1:
dr["Preis"].ToString()