Ett program kan få åtkomst till och arbeta med en lokal SQL-databas på flera olika sätt. Programdesignen kan variera när det gäller hur programkoden är organiserad, i vilken ordning och när åtgärder utförs o.s.v. Det kan bli enklare att utveckla programmet beroende på vilka tekniker du använder. Med rätt tekniker blir programmet också enklare att ändra i kommande uppdateringar. Dessutom påverkar teknikerna hur bra programmet fungerar ur användarnas perspektiv.
Distribuera en förifylld databas
När du använder en lokal SQL-databas (AIR) i ditt program förväntas att du använder en databas med en viss struktur för tabeller, kolumner o.s.v. För vissa program måste även vissa data vara ifyllda i databasfilen. Ett sätt att säkerställa att databasen har rätt struktur är att skapa databasen i programkoden. När programmet läses in görs en kontroll om dess databasfil finns på en viss plats. Om filen inte finns körs en rad kommandon för att skapa en databasfil, skapa en databasstruktur och fylla i tabeller med initiala data.
Koden som skapar databasen och dess tabeller är ofta komplex. Ofta används den bara en gång under tiden programmet är installerat, men den påverkar kontinuerligt programmets storlek och komplexitet. Som ett alternativ till att skapa databasen, strukturen och data med programmering, kan du distribuera en förifylld databas med ditt program. När du distribuerar en fördefinierad databas inkluderar du databasfilen i programmets AIR-paket.
Liksom alla filer som inkluderas i ett AIR-paket, installeras en paketerad databasfil i programkatalogen (katalogen representeras av egenskapen
File.applicationDirectory
). Filerna i den katalogen är dock skrivskyddade. Använd filen i AIR-paketet som mall för databasen. Första gången en användare kör programmet ska användaren kopiera den ursprungliga databasfilen till sin
Peka mot programlagringskatalogen
(eller någon annan plats) och använda den databasen i programmet.
Bästa teknikerna för att arbeta med lokala SQL-databaser
Nedan ges förslag på olika tekniker som du kan använda för att underlätta hanteringen av programmen och förbättra programmens prestanda och säkerhet när du arbetar med lokala SQL-databaser.
Skapa databasanslutningar i förväg
Även om inga satser körs i programmet vid första inläsningen kan du undvika fördröjningar när satserna körs genom att initiera ett SQLConnection-objekt och anropa dess
open()
- eller
openAsync()
-metod i förväg (till exempel efter programstarten). Se
Ansluta till en databas
.
Återanvänd databasanslutningar
Om du ansluter till en viss databas under programmets körningstid kan du spara en referens till SQLConnection-instansen och återanvända den i programmet, i stället för att stänga och öppna anslutningen på nytt. Se
Ansluta till en databas
.
Prioritera asynkront körningsläge
När du skriver kod för dataåtkomst kan det vara lockande att köra åtgärderna synkront i stället för asynkront, eftersom synkrona åtgärder ofta kräver kortare och mindre komplicerad kod. Synkrona åtgärder kan dock påverka prestanda på ett märkbart sätt för användarna och försämra deras upplevelse av programmet (se avsnittet
Använda synkrona och asynkrona databasåtgärder
). Tiden det tar att utföra en åtgärd varierar beroende på åtgärden och inte minst på mängden data som ingår i åtgärden. En
INSERT
-sats (SQL) som bara lägger till en rad i databasen tar till exempel mindre tid än en
SELECT
-sats som hämtar tusentals rader data. När du använder synkron körning för att utföra flera åtgärder är dock åtgärderna vanligtvis sammankopplade. Även om det tar mycket kort tid att utföra varje enskild åtgärd fryses programmet tills alla synkrona åtgärder har slutförts. Den sammanlagda tiden för alla sammankopplade åtgärder kan vara tillräcklig för att stoppa programmet.
Använd asynkrona åtgärder som standard, särskilt om ett stort antal rader ingår i åtgärderna. Det finns en teknik för att dela upp bearbetningen i stora mängder
SELECT
-satsresultat (se avsnittet
Hämta SELECT-resultat i delar
). Den här tekniken kan dock endast användas i asynkront körningsläge. Använd synkrona åtgärder endast när du inte kan få önskat resultat med asynkron programmering, när du har övervägt inverkan på prestanda som programmets användare får erfara och när du har testat programmet så att du vet hur programmets prestanda påverkas. Du måste kanske skriva en mer komplicerad kod när du använder asynkron körning. Tänk på att du endast behöver skriva koden en gång, men att programmets användare måste använda den upprepade gånger, oavsett om den tar kort eller lång tid att köra.
Om du använder en separat SQLStatement-instans för varje SQL-sats kan flera SQL-åtgärder placeras i kö samtidigt. Den asynkrona koden skrivs i så fall på liknande sätt som den synkrona koden. Mer information finns i
Om asynkront körningsläge
.
Använd separata SQL-satser och ändra inte SQLStatement-instansens textegenskap
Skapa en separat SQLStatement-instans för varje SQL-sats som körs fler än en gång i programmet. Använd den SQLStatement-instansen varje gång SQL-kommandot körs. Anta till exempel att du skapar ett program som innehåller fyra olika SQL-åtgärder som utförs flera gånger. I så fall skapar du fyra separata SQLStatement-instanser och kör varje sats genom att anropa dess
execute()
-metod. Undvik att använda en enskild SQLStatement-instans för alla SQL-satser och omdefiniera
text
-egenskapen före varje körning av satsen.
Använd satsparametrar
Använd SQLStatement-parametrar. Sammanfoga aldrig användarens indata med satstexten. Programmet blir säkrare om du använder parametrar eftersom det skyddar mot SQL-injektionsangrepp. Du kan dessutom använda objekt i frågor (i stället för endast SQL-litteralvärden). Satserna körs även mer effektivt eftersom de kan återanvändas utan att de behöver kompileras om varje gång de körs. Mer information finns i
Använda parametrar i programsatser
.
|
|
|