asp.net MySQL select - statements

Gast #5855214
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)
Gast #5855228
Lesenswert?

Nachtrag:
1
        MySqlConnection dbcon = new MySqlConnection("......");
2
        dbcon.Open();
3

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

5
Details: Error processing request.
6

7
Exception stack trace:
8
  at System.Web.UI.DataBinder.GetPropertyValue (System.Object container, System.String propName) [0x0006e] in <79d7580b4e46487286a5f8386a98413d>:0 
9
  at System.Web.UI.WebControls.BoundField.GetBoundValue (System.Web.UI.Control controlContainer) [0x0004d] in <79d7580b4e46487286a5f8386a98413d>:0 
10
  at System.Web.UI.WebControls.BoundField.GetValue (System.Web.UI.Control controlContainer) [0x00012] in <79d7580b4e46487286a5f8386a98413d>:0 
11
  at System.Web.UI.WebControls.BoundField.OnDataBindField (System.Object sender, System.EventArgs e) [0x00024] in <79d7580b4e46487286a5f8386a98413d>:0 
12
  at System.Web.UI.Control.OnDataBinding (System.EventArgs e) [0x00029] in <79d7580b4e46487286a5f8386a98413d>:0 
13
  at System.Web.UI.Control.DataBind (System.Boolean raiseOnDataBinding) [0x0003c] in <79d7580b4e46487286a5f8386a98413d>:0 
14
...
#5855238
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.
#5855248
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.
Gast #5855252
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?
Gast #5855294
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.
Gast #5855322
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren