| |
ADO.NET / DatenbankenVS 2017 SQL Datenbankabfrage | | | Autor: Parallax | Datum: 22.03.19 20:19 |
| Moin,
ich hatte vor ein paar Jahren ein Programm geschrieben, welches Messwerte diverser Sensoren aus einer Feldbuskarte am Bildschirm nummerisch/grafisch darstellt.
Nun soll dieses Programm erweitert werden, um die Messwerte in bestimmten Abständen zu Speichern.
Dafür habe ich mir eine "dienstbasierte Datenbank" mit zwei Tabellen erstellt.
Tabelle 1:
ID (primary key) | Projekt | Datum
Projekt enthält den Projektnamen als nvarchar, Datum das Erstelldatum als datetime.
Bei Tabelle 2 bin ich mir nicht ganz sicher. Dort sollen die einzelnen Messwerte eines Projekts mit Zeitstempel gespeichert werden.
Also ungefähr so:
?Projekt? | Messwert_1 | Messwert_2 | Zeitstempel
Mein Ziel ist es, alle Messwerte mit zugehörigen Zeitstempel anzuzeigen, die zu einem bestimmten Projekt gehören. Gleichzeitig sollen alle Einträge in dieser Tabelle welche zu einem bestimmten Projekt gehören gelöscht werden, wenn das Projekt aus der Tabelle 1 gelöscht wird.
Meine letzt SQL Sache ist schon gefühlt ein paar Jahrhunderte her, deswegen bin ich mir nicht mehr so sicher wie man das macht. Auch waren meine Datenbankerfahrungen immer in PHP, ab und an in Access. In VS 2017 habe ich es schon hinbekommen mittels des Connect Strings eine Verbindung aufzubauen, aber mit dem SQLDataReader komm ich nicht so ganz klar.
Auch bin ich mir nicht ganz sicher wie eine entsprechende Prozedur aufgebaut werden muss um Daten zu schreiben oder zu lesen. Kann mir da jemand ein wenig Nachhilfe geben wir das in VB 2017 so gemanagt wird oder hat jemand ein Tutorial für mich?
Grüße,
Andre
Am morgen nen Joint und der Tag is dein Freund | |
Re: VS 2017 SQL Datenbankabfrage | | | Autor: Parallax | Datum: 23.03.19 11:10 |
| Danke Manfred,
das hat mir schon mal geholfen.
Ich habe das jetzt mit einem Fremdschlüssel gelöst und bei der Detailtabelle ein ON DELETE CASCADE hinzugefügt.
Klappt im Testbetrieb schon mal ganz gut.
Eine Frage hätte ich noch. Besser gesagt zwei oder drei.
Nach dem Öffnen der Datenbankverbindung führe ich ja das SQL Command aus. Anschließend erhält der SQLDataReader die Daten. Diesen packe ich in eine DO WHILE raeader.Read = TRUE Schleife rein und kann dann die einzelnen Datensätze auslesen. Gibt es auch sowas wie eine AnzahlSpalten Eigenschaft? Nun gut, ich weiß ja wie viele Spalten ich von der Tabelle erwarte, aber das immer im voraus statisch fest zu legen ist irgendwie komisch.
Genau so verhält es sich mit der Anzahl der Datensätze. Diese sind ja immer verschieden, je nachdem wie viele Messwerte aufgenommen wurden. Wenn ich im voraus wüsste wieviele es sind, könnte ich ein passendes Array dimensionieren. Gibt es da elegante Lösungen dafür?
Nach dem Reader schließe ich ja die Verbindung wieder... Ist das notwendig? Was passiert wenn ich eine Verbindung wieder öffne, welche gar nicht geschlossen wurde?
Grüße,
Andre
Am morgen nen Joint und der Tag is dein Freund | |
Re: VS 2017 SQL Datenbankabfrage | | | Autor: Manfred X | Datum: 23.03.19 11:35 |
| Verwende einen Dataadapter und ein Dataset (Fill) statt dem Datareader.
Dann erledigen sich Deine Fragen zum Teil von selbst.
Der Adapter richtet das Dataset beim Fill ein.
http://openbook.rheinwerk-verlag.de/visualbasic_2008/vb2008_25_ado_dataadapter_003.htm#mj6712b593a067792585ca6b9b63b566f4 | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevGraph (VB/VBA)
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|