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)
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 | ... |
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.
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?
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.
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?
"col1 im die query mit aufnehmen, nicht nur sum(col1)" Genau das war's, das habe ich unabhängig selber rausgefunden.
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
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.
Detlef schrieb: > Sorry, > ich hatte nicht sum(), sondern from_unixtime(). Das erleichtert die Fehlersuche ungemein, keine genaue Angaben, falsche Source, ..., baba leo
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.)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.