Pakiet | flash.data |
Klasa | public class SQLResult |
Dziedziczenie | SQLResult Object |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Do instancji klasy SQLResult dla zapytania SQL można uzyskać dostęp przez wywołanie metody SQLStatement.getResult()
lub przez przekazanie jej jako argumentu do procedury obsługi wyniku instancji klasy Responder określonej w wywołaniu metody SQLStatement.execute()
lub SQLStatement.next()
. Zazwyczaj instancje klasy SQLResult nie są tworzone bezpośrednio w kodzie pisanym przez programistę.
Instancja klasy SQLResult zapewnia dostęp do wierszy danych zwracanych przez instrukcję SELECT
(za pomocą właściwościdata
) w celu pobrania informacji o identyfikatorze wiersza dla instrukcji INSERT
(za pomocą właściwości lastInsertRowID
), w celu zdefiniowania liczby wierszy objętych instrukcjąINSERT
, UPDATE
lub DELETE
(za pomocą właściwości rowsAffected
) lub w celu określenia, czy istnieją dodatkowe wiersze, które nie zostały pobrane z wyniku działania instrukcji SELECT
(za pomocą właściwości complete
).
Powiązane elementy interfejsu API
Właściwość | Zdefiniowane przez | ||
---|---|---|---|
complete : Boolean [tylko do odczytu]
Wskazuje, czy wszystkie dane wynikowe wykonania instrukcji zostały zwrócone. | SQLResult | ||
constructor : Object
Odwołanie do obiektu klasy lub funkcji konstruktora, dotyczące danej instancji obiektu. | Object | ||
data : Array [tylko do odczytu]
Dane zwrócone w wyniku wykonania instrukcji, specyficzne dla wykonania instrukcji SELECT. | SQLResult | ||
lastInsertRowID : Number [tylko do odczytu]
Ostatni identyfikator wiersza wygenerowany za pomocą instrukcji INSERT. | SQLResult | ||
rowsAffected : Number [tylko do odczytu]
Wskazuje, jaka liczba wierszy została zmieniona przez operację. | SQLResult |
Metoda | Zdefiniowane przez | ||
---|---|---|---|
Tworzy instancję klasy SQLResult. | SQLResult | ||
Wskazuje, czy dla obiektu zdefiniowano określoną właściwość. | Object | ||
Wskazuje, czy instancja klasy Object należy do łańcucha prototypów obiektu określonego jako parametr. | Object | ||
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | ||
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | ||
Zwraca ciąg reprezentujący obiekt — sformatowany zgodnie z konwencjami właściwymi dla ustawień regionalnych. | Object | ||
Zwraca ciąg reprezentujący określony obiekt. | Object | ||
Zwraca pierwotną wartość dla określonego obiektu. | Object |
complete | właściwość |
complete:Boolean
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Wskazuje, czy wszystkie dane wynikowe instrukcji zostały zwrócone.
Jeśli instrukcja zwraca jeden lub więcej wierszy, ta właściwość wskazuje, czy wszystkie wiersze zostały zwrócone. Jeśli metoda execute()
obiektu SQLStatement zostanie wywołana z wartością argumentu prefetch
, jedynie określona liczba wierszy danych wynikowych zostanie zwrócona we właściwości data
obiektu SQLResult. Kolejne wywołania metody SQLStatement.next()
spowodują, że dodatkowe dane staną się dostępne. Ta właściwość jest stosowana w celu ustalenia, że zwrócone zostały już ostateczne wyniki.
Należy zauważyć, że liczba wierszy nie jest znana w czasie wykonania, dlatego wykonywanie instrukcji jest uznawane za zakończone dopiero wtedy, gdy kursor bazy danych znajdzie się za ostatnim wierszem. Jeśli metoda SQLStatement.execute()
zostanie wywołana z argumentem prefetch
, właściwość complete
wynikowej instancji klasy SQLResult osiągnie wartość true
dopiero wtedy, gdy liczba żądanych wierszy przekroczy co najmniej o jeden całkowitą liczbę wierszy w zestawie wyników.
Implementacja
public function get complete():Boolean
Powiązane elementy interfejsu API
data | właściwość |
data:Array
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Dane zwrócone w wyniku wykonania instrukcji, specyficzne dla wykonania instrukcji SELECT
.
Gdy instrukcja zwróci jeden lub większą liczbę wierszy, ta właściwość będzie tablicą zawierającą obiekty, które reprezentują wiersze danych wynikowych. Każdy obiekt w tablicy zawiera nazwy właściwości, które odpowiadają nazwom kolumn zestawu danych wynikowych.
Na przykład: jeśli założymy, że wykonywana jest następująca instrukcja SQL SELECT
:
SELECT lastName, firstName FROM employees
Przy założeniu, że tabela employees
zawiera 10 wierszy właściwość SQLResult.data
jest tablicą z dziesięcioma elementami. Każdy element jest obiektem z dwiema właściwościami: lastName
i firstName
.
Sytuacja jest bardziej złożona, jeśli instrukcja SELECT
jest używana z kolumną bardziej złożonych wyników, np. z funkcją agregacji. Przykład: załóżmy, że wykonano następującą instrukcję SQL:
SELECT departmentId, SUM(salary) FROM employees GROUP BY departmentId
W wynikach tej instrukcji każdy obiekt w tablicy data
zawiera dwie właściwości o nazwach departmentId
i SUM(salary)
. Jednak „SUM(salary)” nie jest poprawnym identyfikatorem. Jeśli używana jest kolumna obliczona, taka jak agregat lub inna funkcja, należy określić alias dla obliczonej kolumny w instrukcji SQL. Alias będzie używany jako nazwa właściwości w obiektach danych wynikowych. Przykład: rozważmy następującą alternatywę poprzedniej instrukcji:
SELECT departmentId, SUM(salary) AS salarySubtotal FROM employees GROUP BY departmentId
W tablicy data
tej instrukcji obiekty wynikowe zawierają dwie właściwości o nazwach departmentId
i salarySubtotal
.
Właściwość data
jest zawsze tablicą bez względu na liczbę wierszy i kolumn w zestawie wynikowym. Na przykład: poniższa instrukcja SELECT
zwraca jeden wiersz i jedną kolumnę, co stanowi jedną wartość:
SELECT COUNT(*) AS numEmployees FROM employees
Po wykonaniu zapytania właściwość data
zawiera obiekt Array z jednym elementem. Ten element jest obiektem z jedną właściwością numEmployees
.
Jeśli dane wynikowe zawierają zduplikowane nazwy kolumn, np. jeśli instrukcja SELECT
zwraca dwie różne kolumny id
dla dwóch różnych tabel, wówczas duplikaty otrzymują nazwy właściwości zgodnie z wartością właściwości SQLConnection.columnNameStyle
. Domyślnie nazwa każdej kolumny jest używana jako nazwa właściwości, ale jeśli zestaw wynikowy zawiera wiele kolumn o takiej samej nazwie, wówczas dla kolumn o identycznych nazwach stosowany jest format długich nazw [nazwa-tabeli]_[nazwa-kolumny]
. To działanie można zmienić poprzez ustawienie właściwości SQLConnection.columnNameStyle
y.
Domyślnie obiekty w tablicy data
są instancjami klasy Object. Jednak ustawienie klasy dla właściwości SQLStatement.itemClass
powoduje, że elementy tablicy data
są tworzone jako instancje tej klasy. Dla każdej kolumny w zestawie danych wynikowych klasa itemClass
musi zawierać właściwość, której nazwa będzie zgodna z nazwą kolumny.
Jeśli instrukcja nie zwraca żadnych danych, ta właściwość ma wartość null
. Dochodzi do tego w przypadku instrukcji innej niż SELECT
oraz w przypadku instrukcji SELECT
, które zwracają 0 wierszy.
Implementacja
public function get data():Array
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
itemClass
do automatycznego utworzenia instancji klasy niestandardowej na podstawie wyników instrukcji SQL SELECT
.
// Employee class definition package { public class Employee { public var name:String; public var ssn:String; public var id:uint; public override function toString():String { return "id: "+ id.toString() + " name: " + name + " ssn: " + ssn; } } } // using the Employee class as SQLStatement.itemClass var conn:SQLConnection; var dbStatement:SQLStatement; function init():void { conn = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, connOpenHandler); dbStatement = new SQLStatement(); dbStatement.sqlConnection = conn; dbStatement.text = "SELECT id, name, ssn FROM employees"; dbStatement.itemClass = Employee; var dbFile:File = new File(File.separator + "employee.db"); conn.open(dbFile); } function connOpenHandler(event:SQLEvent):void { dbStatement.addEventListener(SQLEvent.RESULT, resultHandler); dbStatement.execute(); } function resultHandler(event:SQLEvent):void { var result:SQLResult = dbStatement.getResult(); if (result != null) { var emp:Employee; var numRows:int = result.data.length; for (var i:int = 0; i < numRows; i++) { emp = result.data[i]; trace(emp.toString()); } } }
lastInsertRowID | właściwość |
lastInsertRowID:Number
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Ostatni identyfikator wiersza wygenerowany za pomocą instrukcji INSERT
.
Wartością jest 0, jeśli wykonaną instrukcją nie była instrukcja INSERT
.
Identyfikator wiersza jednoznacznie identyfikuje wiersz w tabeli bazy danych. Jego wartość jest często generowana przez bazę danych.
Więcej informacji na temat kluczy podstawowych i generowanych identyfikatorów wierszy zawiera sekcja dotycząca instrukcji „CREATE TABLE” oraz sekcja „Wyrażenia” w dodatku „Obsługa języka SQL w lokalnych bazach danych”.
Implementacja
public function get lastInsertRowID():Number
Powiązane elementy interfejsu API
rowsAffected | właściwość |
rowsAffected:Number
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Wskazuje, jaka liczba wierszy została zmieniona przez operację. Zliczane są jedynie zmiany, które zostały bezpośrednio określone przez instrukcje INSERT
, UPDATE
lub DELETE
.
Dodatkowe zmiany wywołane działaniem wyzwalaczy nie są zliczane. Aby określić całkowitą liczbę zmian, uwzględniającą także zmiany wywołane działaniem wyzwalaczy, należy skorzystać z właściwości SQLConnection.totalChanges
.
Należy zauważyć, że jeśli powiązaną operacją SQL jest instrukcja DELETE
bez klauzuli WHERE
(tzn. instrukcja usuwająca wszystkie wiersze w tabeli), właściwość rowsAffected
ma zawsze wartość 0, niezależnie od liczby wierszy, które zostały usunięte. Jeśli potrzebna będzie wiedza na temat liczby usuniętych wierszy, należy dołączyć klauzulę WHERE
(WHERE 1 = 1
), w takim wypadku wszystkie wiersze zostaną usunięte, a właściwość rowsAffected
dokładnie odzwierciedli liczbę usuniętych wierszy. Jednak w zależności od liczby wierszy, które zostały usunięte, wykonanie takiej czynności może mieć ujemny wpływ na działanie instrukcji.
Implementacja
public function get rowsAffected():Number
Powiązane elementy interfejsu API
SQLResult | () | Konstruktor |
public function SQLResult(data:Array = null, rowsAffected:Number = 0, complete:Boolean = true, rowID:Number = 0)
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Tworzy instancję klasy SQLResult. Zazwyczaj konstruktor klasy SQLResult nie jest wywoływany bezpośrednio w kodzie pisanym przez programistę. Aby pobrać instancję klasy SQLResult skojarzoną z konkretną instancją klasy SQLStatement, należy wywołać metodę getResult()
instancji. Instancja klasy SQLResult jest również przekazywana jako argument do procedury obsługi wyniku, gdy instancja klasy Responder zostanie określona dla wywołania metody execute()
lub next()
.
data:Array (default = null ) — Tablica wierszy zwracanych w wyniku wykonania instrukcji. Jeśli instrukcja nie zwraca żadnych wierszy, tę wartość należy określić jako null.
| |
rowsAffected:Number (default = 0 ) — Określa liczbę wierszy zmienionych przez wykonaną instrukcję.
| |
complete:Boolean (default = true ) — Wskazuje, czy są dodatkowe wiersze, które można pobrać, czy też wszystkie dane zostały już zwrócone.
| |
rowID:Number (default = 0 ) — Jeśli instrukcją SQL była instrukcja INSERT , ta wartość będzie niepowtarzalnym identyfikatorem nowego wiersza.
|
Tue Jun 12 2018, 12:06 PM Z