mikrocontroller.net

Forum: PC-Programmierung asp.net MySQL select - statements


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Detlef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich programmiere in Mono/Linux für einen Linux-Server asp.net,*.aspx .
Da komme ich momentan nicht weiter.
Ich habe eine SqlDateSource mit MySQL-Connection.

Diese SqlDateSource ist mit einer GridView verbunden.

Solange ich die Spalten der Datenbank direkt ausgebe, funktioniert es 
normal.

Verwende ich aber eine MySql Funktion im Query, z.B.
"Select sum(col1), col2 from table1",

dann hat er probleme mit col1:

System.Web.HttpException
Property col1 not found in System.Data.DataRowView

Die gleiche Query funktioniert aber, wenn ich direkt im 
MySql-Eingabe-Interpreter bin.

Kennt jemand eine Lösung?
Auf andere Datenbanken oder LinQ umsteigen ?
(Mit SQLite geht es auch nicht, schon ausprobiert, das scheint kein 
DB-Problem zu sein, sondern asp.net oder mono)

Autor: Detlef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:
        MySqlConnection dbcon = new MySqlConnection("......");
        dbcon.Open();

        MySqlCommand cmde = new MySqlCommand(
                "select  sum(col1) , col2 FROM table1", dbcon);
        MySqlDataAdapter da = new MySqlDataAdapter(cmde);
        DataSet ds = new DataSet();
        da.Fill(ds);
        gridTest1.DataSource = ds;
        gridTest1.DataBind();
System.Web.HttpException
Property col1 not found in System.Data.DataRowView
Description: HTTP 500.Error processing request.

Details: Error processing request.

Exception stack trace:
  at System.Web.UI.DataBinder.GetPropertyValue (System.Object container, System.String propName) [0x0006e] in <79d7580b4e46487286a5f8386a98413d>:0 
  at System.Web.UI.WebControls.BoundField.GetBoundValue (System.Web.UI.Control controlContainer) [0x0004d] in <79d7580b4e46487286a5f8386a98413d>:0 
  at System.Web.UI.WebControls.BoundField.GetValue (System.Web.UI.Control controlContainer) [0x00012] in <79d7580b4e46487286a5f8386a98413d>:0 
  at System.Web.UI.WebControls.BoundField.OnDataBindField (System.Object sender, System.EventArgs e) [0x00024] in <79d7580b4e46487286a5f8386a98413d>:0 
  at System.Web.UI.Control.OnDataBinding (System.EventArgs e) [0x00029] in <79d7580b4e46487286a5f8386a98413d>:0 
  at System.Web.UI.Control.DataBind (System.Boolean raiseOnDataBinding) [0x0003c] in <79d7580b4e46487286a5f8386a98413d>:0 
...


Autor: Thomas V. (tomv)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Detlef,

ich habe zwar keine Ahnung von asp.net, aber "Gridview" klingt für mich 
schon nach einer Funktion für die Präsentation der Daten in einer GUI.
Eventuell braucht er ja dafür konkrete Spaltennamen?

In diesem Fall könnte eine leicht abgeänderte Query wie

"Select sum(col1) as summe1, col2 from table1"

vielleicht zielführend sein.

Autor: Detlef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nee, ich habe es ausprobiert "sum(col1) as sum1", und er wirft die 
gleiche Exception.

https://dev.mysql.com/doc/dev/connector-net/6.10/html/T_MySql_Data_MySqlClient_MySqlCommand.htm

Die MySqlCommand Class ist ja sehr umfangreich,
man müsste vllt die Query anders formulieren?

Autor: Thomas V. (tomv)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Detlef schrieb:
> Nee, ich habe es ausprobiert "sum(col1) as sum1", und er wirft die
> gleiche Exception.

Dann wäre es interessanter, mehr herauszubekommen, was ihn da stört.

> Die MySqlCommand Class ist ja sehr umfangreich,
> man müsste vllt die Query anders formulieren?

Aus Sicht von MySQL ist die Query syntaktisch in Ordnung. habe da 
sgerade noch einmal direkt im MySQL getestet.
Ich vermute die Ursache eher in Deinem Framework drumherum.

Autor: Detlef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich den Spaltennamen in runden Klammern schreibe, also
"Select (col1), col2 from ..."
dann kommt auch die gleiche Exception.
(Aber funktioniert im MySql-Interpreter)

Muss man vllt fÜr die Klammern spezielle Escape-Sequenzen verwenden?

Autor: Mit zur Wahrheit. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
col1 im die query mit aufnehmen, nicht nur sum(col1)

Autor: Thomas V. (tomv)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist es vielleicht ein Bug im Mono?

https://marc.info/?l=mono-bugs&m=123370994706945&w=2

Autor: Detlef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"col1 im die query mit aufnehmen, nicht nur sum(col1)"

Genau das war's, das habe ich unabhängig selber rausgefunden.

Autor: leo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Detlef schrieb:
> "Select sum(col1), col2 from table1",

Du zeigst zwar die Tabelle nicht, also nur eine Vermutung:
Du kannst Aggregate (sum) nicht mit Einzelwerten mischen, du brauchst 
entweder auch ein Aggregat fuer col2 oder ein 'group by col2'.

HTH
leo

Autor: Detlef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry,
ich hatte nicht sum(), sondern from_unixtime().
Die Zeiten sind in der Spalte col1 als unix_timestamp gespeichert, ich 
wollte sie als Datum/Uhrzeit anzeigen.

Da ich vorher viel im Internet suchte, und sum() öfters vorkommt als 
from_unixtime() habe ich es geändert.
Durch die Exception ist mir die Vermischung Aggregate/Einzel gar nicht 
aufgefallen.

Autor: leo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Detlef schrieb:
> Sorry,
> ich hatte nicht sum(), sondern from_unixtime().

Das erleichtert die Fehlersuche ungemein, keine genaue Angaben, falsche 
Source, ..., baba

leo

Autor: Detlef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hatte mit dem Fehler nichts zu tun.
Das Verhalten war bei sum() oder from_unixtime() gleich.

Das obige Code-Beispiel mit der abgedruckten Exception war aber original 
mit sum() !

Ich bin davon ausgegangen, dass Mono seltene DB-typische Funktionen 
nicht kennt, aber bei DB-unabhängigen Funktionen funktionieren müsste.
(Von timestamps darf und kann ich ja die Summe bilden,
aber das macht wenig Sinn.)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.