Laden...

Daten mit ADO.NET2 aus einer Datenbank lesen

Erstellt von klaus vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.215 Views
K
klaus Themenstarter:in
10 Beiträge seit 2006
vor 17 Jahren
Daten mit ADO.NET2 aus einer Datenbank lesen

Moin,

ich möchte eine Tabelle oder eine Zeile aus meiner Datenbank lesen,
und zwar folgende Select-Anfrage

SELECT avg( temp),avg( humidity), avg(wetness), sum(rain)
FROM hourlyWeather
WHERE (day > @actualDay)
GROUP BY day
ORDER BY day

Diese Anfrage ist unter MS VisualStudio Express eingegeben und
mit einer Fill und Get Methode ausgestattet.
Folgender Code ergibt eine leere Zeile, obwohl Daten erscheinen müssten:


SimulationDataSet.hourlyWeatherDataTable dailyWeatherTable = new SimulationDataSet.hourlyWeatherDataTable();
weatherTableAdapter.FillDailyWeather(dailyWeatherTable, actualDay);
DataRow dailyWeatherRow = dailyWeatherTable.Rows[0];
MessageBox.Show(dailyWeatherRow[1].ToString() + " | " + dailyWeatherRow[0].ToString() + " | " + dailyWeatherRow[2].ToString());

Selbst wenn die WHERE-Clausel weggelassen wird erscheinen keine Daten.

Was mache ich falsch?!?

DANKE
MAtthias

121 Beiträge seit 2006
vor 17 Jahren

Hi Klaus,
also an dem SQL kann ich nichts "Böses" erkennen 🙂
Das einzige ist, dass man bei "group by" besser mit "having" statt "where" arbeitet. Aber wie Du schreibst, hast Du das "where" ja bereits weggelassen.

Probier auch mal aus:

select day, sum( rain) from hourlyWeather group by day

wenn da auch nichts kommt, mach doch mal SQL innerhalb des Management Studios (Express).

Melde Dich, was Du rausgefunden hast.
Gruß Hape

Microsoft SQL Server Management Studio Express:
http://www.microsoft.com/downloads/details.aspx?familyid=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&displaylang=de

T
68 Beiträge seit 2006
vor 17 Jahren

Das einzige ist, dass man bei "group by" besser mit "having" statt "where" arbeitet.

Das würde ich nicht. Die Where Stimmt auf jedenfall. da "kürzt" du mal alles weg von der tabelle was nicht brauchbar / relevant ist. mit having gehst du nur in die einzelnen gruppierungen und selektierst noch was du nich bracuhst.

Bsp:mit deinem Statement
Table: day x y
23 c s
24 n m
24 a g
25 b h

Sql Fängt ja mit der From table Where Klausel an: tabelle Hourly Weather dann alles weg wo day < @actualDay.
dann bleibt dir mal wenn actualDay = 23:
24 n m
24 a g
25 b h

group by day:

     24     n     m  
             a      g  
     25    b       h  

und having würde dann auf einzelnen grupperiungen gehen.

DeFakto Fehler muss woanders liegen. Um sicher zu gehen für das select statement direkt auf der Db aus. Sollten da Fehler sein schreit er eh. bester test.

Diese Anfrage ist unter MS VisualStudio Express eingegeben und mit einer Fill und Get Methode ausgestattet.

was meinst du damit?

484 Beiträge seit 2006
vor 17 Jahren

Woher kommt:

weatherTableAdapter.FillDailyWeather(dailyWeatherTable, actualDay);

Ich denke mal es handelt sich um einen System.Data.SqlClient.DataAdapter oder hast Du einen eigenen Adapter implemtiert?

weatherTableAdapter.Fill(dailyWeatherTable);


Jörg