Database objektet
Database-objektet representerar en enskild databas (anslutning) i serverkonfigurationen.
Metoder i Database-objektet
ExecuteQuery(sqlStatement)
Denna metod används för att utföra en SQL-sats. SQL-satsen stödjer alla SQL-kommandon som kan skrivas som en sträng. Tänk på att detta kommando är väldigt kraftfullt! Se därför till att du vet vad du gör innan du kör ett kommando mot en databas innehållande data.
Detta kommando utför SQL-satsen synkront. Det innebär att skriptet kommer att fastna på denna rad till databasen har utfört SQL-satsen. Om det är en komplex fråga, så kan detta ta lite tid. Överväg då att använda AsyncQuery i stället. Det finns en gräns för hur länge skriptet kan köra. Om skriptet tar längre tid än 20s på sig, kommer det att avbrytas med ett körningsfel.
sqlStatement är obligatorisk. Detta är själva SQL-satsen som ska utföras. Läs i manualen till din databas för hjälp att skriva SQL-satser för din databas.
Return value är ett database query-objekt som i sin tur innehåller ett transkations ID och resultatet av SQL-satsen.
Exempel:
var res = DB.ExecuteQuery("insert into mytable (cola, colb) values (10, 20);");
Det här skriptet förutsätter att det finns en definierad databas(anslutning) som heter DB och i den databas som används finns det en tabell som heter mytable med två kolumner som heter cola respektive colb. Variablen res innehåller ett database query-objekt som innehåller resultatet av frågan samt statusinformation om hur det gick, om det uppstod något fel eller liknande.
Skriptet skapar en ny post i tabellen mytable.
AsyncQuery(sqlStatement)
Denna metod används för att utföra en SQL-sats. SQL-satsen stödjer alla SQL-kommandon som kan skrivas som en sträng. Tänk på att detta kommando är väldigt kraftfullt! Se därför till att du vet vad du gör innan du kör ett kommando mot en databas innehållande data.
Detta kommando utför SQL-satsen asynkront. Det innebär att skriptet omedelbart kör vidare med nästa rad. Själva databasanropet kommer att köras i bakgrunden och när körningen är färdig får man ett event antingen på resultatobjektet som returneras från AsyncQuery-metoden eller på databas-objektet själv.
sqlStatement är obligatorisk. Detta är själva SQL-satsen som ska utföras. Läs i manualen till din databas för hjälp att skriva SQL-satser för din databas.
Return value är ett database query-objekt som i sin tur innehåller ett transkations ID och resultatet av SQL-satsen. På detta objekt kommer ett event när exekveringen är färdig eller ett fel uppstår.
Exempel:
var res = DB.AsyncQuery("select * from mytable;");
Det här skriptet förutsätter att det finns en definierad databas(anslutning) som heter DB och i den databas som används finns det en tabell som heter mytable. Variablen res är ett database query-objekt som innehåller resultatet av frågan samt statusinformation om hur det gick, om det uppstod något fel eller liknande.
SQL-frågan returnerar alla rader och alla fält i tabellen mytable.
ExecuteProcedure(storedProcedureName[, param1[, param2[, …}}})
Denna metod används för att utföra en lagrad SQL procedur.
Detta kommando utförs synkront. Det innebär att skriptet kommer att fastna på denna rad till databasen har utfört den lagrade proceduren. Om det är en komplex procedur, så kan detta ta lite tid. Om skriptet tar längre tid än 20s på sig, kommer det att avbrytas med ett körningsfel.
storedProcedureName är obligatorisk. Detta är den lagrade procedur som skall utföras. Läs i manualen till din databas för hjälp med att skapa lagrade procedurer för din databas.
param1,2, kan vara obligatorisk, detta avgörs av vad den lagrade procedur som skall köras kräver. Mängden param måste matcha vad den kräver för att kunna köras.
Returvärde är ett database query-objekt som i sin tur innehåller ett transkations ID och resultatet av SQL-satsen.
Exempel:
var res = DB.ExecuteProcedure("dbo.sp_GetCarCount", startTime, endTime);
Det här skriptet förutsätter att det finns en definierad databas(anslutning) som heter DB och i den databas som används finns det en lagrad procedur som heter sp_GetCarCount, som nyttjar två inparamatrar, i detta fall en start och en sluttid, för att beräkna antalet bilar mellan dessa. Variablen res innehåller ett database query-objekt som innehåller resultatet av frågan samt statusinformation om hur det gick, om det uppstod något fel eller liknande.
Events i Database-objektet
Database-objektet har följande events:
onQueryFinished(event)
Varje databas i datalagret kan generera ett event när ett asynkront databasanrop är färdigt.
Ett smidigt sätt att får reda på när en asynkron databasfråga är klar är att använda onQueryFinished-eventet.
I exemplet nedan skrivs värden från alla fält i den sista posten i tabellen ut i debug-fönstret.
DB.onQueryFinished = function(event)
{
for(var c in event.target.Columns)
{
Debug.Print(event.target.Columns[c] + " = " + event.target.Rows[event.target.RowCount-1][c]);
}
}
Eventargumentet event innehåller en rad egenskaper. Förutom standardegenskaperna i Java-skript innehåller den följande intressanta egenskaper:
currentTarget - Detta är en referens till det databas-objekt eventet genereras på (i detta fall DB).
target - Detta är en referens till det database query-objekt som returnerades från AsyncQuery-anropet. Det är i detta objekt som resultatet av databasfrågan finns. Se vidare beskrivningen av database query-objektet nedan.