In die Datenbank schreiben
Als ich den Code für meine SQLOLEDB-Lösung schrieb, erkannte ich, dass der Provider die im Recordset-Objekt vorhandenen Optionen AddNew und Delete nicht unterstützt. Das hieß, dass ich die SQL-Statements für das Einfügen (INSERT) und Löschen (DELETE) von Zeilen in der Datenbank selbst codieren musste.
Bevor man einen Eintrag schreibt, sollte man den Status des Recordset überprüfen und die Verbindung, sofern sie geöffnet ist, schließen, wie es in Listing G gezeigt wird.
Verwendet man SQL-Statements, um Einträge zur Tabelle hinzuzufügen, müssen die Apostrophe in den Strings doppelt vorhanden sein. SQL interpretiert doppelte Apostrophe als einzelne Apostrophe. Der Code in Listing H zeigt, wie man einzelne Apostrophe durch doppelte ersetzen kann.
Zuletzt kann man die fünf Felder in unsere Remote-Datenbank einfügen, indem man die Methode Recordset::Open() ausführt – wie schon bei der Erstellung der Datenbank. Der Code dafür steht in Listing I.
Da man COM-Automation einsetzt und COM im Compiler nicht unterstützt wird, muss man alle Strings manuell in bstrings umwandeln und den dafür benötigten Speicher manuell allozieren und deallozieren.
Aus der Datenbank lesen
Die Ansicht der ersten oder zweiten Registerkarte der Anwendung zählt die einzelnen Datenbankeinträge auf. Dafür verwendet man die Methode CDatabase::ReadRecord(). Die erste Aktion ReadRecord überprüft, dass das Recordset geöffnet wurde, wie in Listing J dargestellt.
Um die Felder aus dem Recordset-Objekt auszulesen, muss man eine Feldsammlung abrufen und dann für jedes der fünf Felder in dieser Sammlung die Eigenschaften für Item und Value überprüfen. Mit DDX von Microsoft Framework Classes lassen sich die resultierenden Werte in die entsprechenden Textboxen setzen. Listing K zeigt, wie man alle fünf Elemente ausliest und sie dann in die entsprechen Entry Variables speichert, die daraufhin zu einer Funktion weitergeleitet werden, welche sie in die Member Variables der MFC (Microsoft Foundation Classes) kopiert.
Schließen der Datenbank
Am Destructor von CDatabase überprüft man den Status des Recordset. Sollte er geöffnet sein, schließt man ihn und schließt dann auch das Objekt Connection. Damit wird die Remote-Verbindung mit der SQL-Datenbank getrennt. Listing L illustriert diesen Destructor.
Versuchen Sie es selbst
Auf der Website ShakeHome.com habe ich einen SQL-Server und eine ViaDB-Verbindung zur Verfügung gestellt. Port 21210 wurde durch die Firewall geöffnet. Sind Sie direkt mit dem Internet verbunden, sollte die Musteranwendung auf jedem Gerät mit Pocket PC 2002 und Netzwerkanschluss funktionieren (ActiveSync zählt nicht). Sie können es also selbst probieren und sehen, wie einfach eine CE-Anwendung mit Fernzugriff sein kann, wenn man die richtigen Tools verwendet.
Neueste Kommentare
Noch keine Kommentare zu Optimierung von ADOCE für Remote-Database-Anwendungen
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.