Strategien für die Arbeit mit SQL-Datenbanken

Adobe AIR 1.0 und höher

Eine Anwendung kann auf verschiedene Weise mit einer lokalen SQL-Datenbank arbeiten und darauf zugreifen. Der Anwendungscode kann auf unterschiedliche Arten organisiert werden, die Reihenfolge und Zeitgebung der Ausführung von Operationen kann variiert werden usw. Die gewählten Techniken können sich auf die Entwicklung der Anwendung auswirken. Sie beeinflussen zum Beispiel, wie einfach oder komplex es ist, die Anwendung in späteren Updates zu ändern. Außerdem können sie sich auf die Leistung der Anwendung aus Benutzerperspektive auswirken.

Verteilen von vorab gefüllten Datenbanken

Wenn Sie in Ihrer AIR-Anwendung eine lokale SQL-Datenbank verwenden, erwartet die Anwendung eine Datenbank mit einer bestimmten Struktur der Tabellen, Spalten usw. Einige Anwendungen benötigen auch bestimmte bereits in die Datenbankdatei eingetragene Daten. Eine Möglichkeit, sicherzustellen, dass die Datenbank die richtige Struktur aufweist, besteht darin, die Datenbank innerhalb des Anwendungscodes zu erstellen. Beim Laden überprüft die Anwendung, ob ihre Datenbankdatei an einem bestimmten Speicherort vorhanden ist. Wenn die Datei nicht vorhanden ist, führt die Anwendung eine Reihe von Befehlen aus, um die Datenbankdatei zu erstellen, die Datenbankstruktur zu erstellen und die Tabellen mit Daten zu füllen.

Der Code, mit dem die Datenbank und ihre Tabellen erstellt werden, ist häufig komplex. Meistens wird er nur einmal im Installationszeitraum der Anwendung verwendet, aber er trägt doch dazu bei, dass Größe und Komplexität der Anwendung zunehmen. Als Alternative zum programmgesteuerten Erstellen der Datenbank, der Struktur und der Daten können Sie auch eine vorab mit Daten gefüllte Datenbank zusammen mit Ihrer Anwendung verteilen. Um eine vordefinierte Datenbank zu verteilen, schließen Sie die Datenbankdatei in das AIR-Paket der Anwendung mit ein.

Wie alle Dateien im AIR-Paket wird eine mitgelieferte Datenbankdatei im Anwendungsverzeichnis installiert (in dem Verzeichnis, dass durch die File.applicationDirectory -Eigenschaft angegeben wird). Dateien in diesem Verzeichnis sind jedoch schreibgeschützt. Verwenden Sie die Datei aus dem AIR-Paket deshalb als „Vorlage“ für die Datenbank. Wenn der Benutzer die Anwendung zum ersten Mal ausführt, kopieren Sie die Originaldatenbankdatei in das Verweisen auf das Anwendungsspeicherverzeichnis des Benutzers (oder an einen anderen Speicherort) und verwenden Sie diese Datenbank in der Anwendung.

Empfohlene Verfahren für die Arbeit mit SQL-Datenbanken

Nachstehend sind einige Techniken aufgeführt, mit denen Sie die Leistung, die Sicherheit und die Verwaltbarkeit Ihrer Anwendung verbessern können, wenn Sie mit SQL-Datenbanken arbeiten.

Erstellen Sie Datenbankverbindungen vorab

Auch wenn Ihre Anwendung beim ersten Laden keine Anweisungen ausführt, instanziieren Sie ein SQLConnection-Objekt und rufen Sie seine open() - oder openAsync() -Methode schon im Voraus auf (zum Beispiel nach dem Starten der Anwendung), um Verzögerungen beim Ausführen von Anweisungen zu vermeiden. Lesen Sie dazu Herstellen von Verbindungen mit Datenbanken .

Verwenden Sie Datenbankverbindungen mehrmals

Wenn Sie während der Ausführung der Anwendung auf eine bestimmte Datenbank zugreifen, behalten Sie einen Verweis auf die SQLConnection-Instanz und verwenden Sie sie während der Ausführung der Anwendung immer wieder, anstatt die Verbindung zu schließen und wieder zu öffnen. Lesen Sie dazu Herstellen von Verbindungen mit Datenbanken .

Bevorzugen Sie den asynchronen Ausführungsmodus

Beim Schreiben von Code für den Datenzugriff sind manche Entwickler versucht, Operationen synchron statt asynchron auszuführen, da der Code für synchrone Operationen häufig kürzer und weniger komplex ist. Wie unter Verwenden von synchronen und asynchronen Datenbankoperationen beschrieben, können synchrone Operationen die Leistung auf eine Weise beeinträchtigen, die auch vom Benutzer wahrgenommen wird und dessen Meinung über die Anwendung negativ beeinflussen kann. Wie lange die Ausführung einer einzelnen Anweisung dauert, richtet sich nach der Art der Operation und besonders nach der involvierten Datenmenge. Eine SQL- INSERT -Anweisung, mit der einer Datenbank nur eine einzelne Zeile hinzugefügt wird, benötigt weniger Zeit als eine SELECT -Anweisung, mit der Tausende von Datenzeilen abgerufen werden. Wenn Sie mehrere Operationen im synchronen Modus ausführen, sind die Operationen normalerweise verflochten. Auch wenn die einzelnen Operationen jeweils schnell ausgeführt werden, bleibt die Anwendung jedoch stehen, bis alle synchronen Operationen abgeschlossen sind. Im Ergebnis kann es insgesamt so lange dauern, bis mehrere verflochtene Operationen ausgeführt sind, dass die Anwendung zum Stillstand oder sogar Absturz kommt.

Verwenden Sie deshalb vorzugsweise asynchrone Operationen, besonders wenn die Operationen viele Datenzeilen betreffen. Wie Sie große Ergebnissätze von SELECT -Anweisungen aufteilen können, wird unter Abrufen von SELECT-Ergebnissen in Teilen beschrieben. Dieses Verfahren kann jedoch nur im asynchronen Ausführungsmodus verwendet werden. Verwenden Sie synchrone Operationen nur dann, wenn Sie bestimmte Funktionen mit der asynchronen Programmierung nicht erreichen können, nachdem Sie die Leistungseinschränkungen für die Benutzer in Erwägung gezogen und nachdem Sie die Anwendung getestet haben, sodass Sie wissen, wie die Leistung der Anwendung betroffen ist. Der Code für die asynchrone Ausführung kann komplexer sein. Bedenken Sie jedoch, dass Sie diesen Code nur einmal schreiben müssen, die Benutzer der Anwendung ihn jedoch – schnell oder langsam – immer wieder verwenden müssen.

In einigen Fällen, wenn Sie eine separate SQLStatement-Instanz für jede auszuführende SQL-Anweisung verwenden, werden mehrere SQL-Operationen in eine Warteschlange gestellt, sodass der asynchrone Code mehr dem synchronen Code ähnelt. Lesen Sie dazu Informationen zum asynchronen Ausführungsmodell .

Verwenden Sie separate SQL-Anweisungen und ändern Sie nicht die text-Eigenschaft der SQLStatement-Instanz

Erstellen Sie für jede SQL-Anweisung, die in einer Anwendung mehrmals ausgeführt wird, eine separate SQLStatement-Instanz für jede SQL-Anweisung. Verwenden Sie diese SQLStatement-Instanz jedes Mal, wenn dieser SQL-Befehl ausgeführt wird. Angenommen, Sie erstellen eine Anwendung mit vier verschiedenen SQL-Operationen, die mehrmals ausgeführt werden. In diesem Fall erstellen Sie vier separate SQLStatement-Instanzen und rufen jeweils die execute() der Anweisung auf, um sie auszuführen. Verwenden Sie nicht eine einzelne SQLStatement-Instanz für alle SQL-Anweisungen, wobei Sie vor jedem Ausführen der Anweisung ihre text -Eigenschaft neu definieren müssen.

Verwenden Sie Anweisungsparameter

Arbeiten Sie mit SQLStatement-Parametern. Verwenden Sie niemals Benutzereingaben im Text der Anweisung. Sie erhöhen die Sicherheit Ihrer Anwendung, indem Sie Parameter verwenden, da so die Möglichkeit von SQL-Injection-Angriffen verhindert wird. Auf diese Weise können Sie in Abfragen Objekte verwenden (statt lediglich SQL-Literalwerte). Anweisungen werden damit außerdem effizienter ausgeführt, da sie mehrmals verwendet werden können, ohne dass sie bei jeder Ausführung neu kompiliert werden müssen. Weitere Informationen finden Sie unter Verwenden von Parametern in Anweisungen .