introduction to sqlite in adobe air

15
Introduction to SQLite in Adobe AIR Peter Elst - Flash Platform Consultant

Upload: peter-elst

Post on 25-Jun-2015

36.009 views

Category:

Technology


3 download

DESCRIPTION

An introduction the SQLite API in Adobe AIR 1.0 -- onAIR tour Europe 2008 Amsterdam and Brussels events

TRANSCRIPT

Page 1: Introduction to SQLite in Adobe AIR

Introduction to SQLitein Adobe AIRPeter Elst - Flash Platform Consultant

Page 2: Introduction to SQLite in Adobe AIR

■ Embedded SQL Database Engine

■ Implements most of SQL92

■ Light-weight, cross-platform, open source

■ No setup, configuration or server required

■ Each database is contained within a single file

Why SQLite in Adobe AIR?

Page 3: Introduction to SQLite in Adobe AIR

1. Create a File reference

2. Create an instance of flash.data.SQLConnection and flash.data.SQLStatement

3. Open the database connection

4. Specify the connection and SQL query to run

5. Run SQLStatement.execute()

How do you use it?

Page 4: Introduction to SQLite in Adobe AIR

import flash.filesystem.File;import flash.data.*;

var dbFile:File = File.applicationStorageDirectory.resolvePath("contacts.db");

var sqlConn:SQLConnection = new SQLConnection();var sqlStatement:SQLStatement = new SQLStatement();

sqlConn.open(dbFile);

sqlStatement.sqlConnection = sqlConn;sqlStatement.text = "SELECT * FROM contacts";sqlStatement.execute();

var result:Array = sqlStatement.getResult().data;

How do you use it?

Page 5: Introduction to SQLite in Adobe AIR

Synchronous versus Asynchronous

■ Synchronous - blocks application until result is available

var sqlConn:SQLConnection = new SQLConnection();sqlConn.open(dbFile);

var result:SQLResult = sqlConn.getResult().result;

■ Asynchronous - uses events and event listeners

var sqlConn:SQLConnection = new SQLConnection();

sqlConn.addEventListener(SQLResultEvent.RESULT, onSQLResult);sqlConn.addEventListener(SQLResultEvent.ERROR, onSQLError);

sqlConn.openAsync(dbFile);

Page 6: Introduction to SQLite in Adobe AIR

■ Connects to the database file

■ Provides events for asynchronous use

■ Schema access

flash.data.SQLConnection

Page 7: Introduction to SQLite in Adobe AIR

■ Executes a SQL query on the specified database connection

■ Provides events for asynchronous use

■ Supports result paging

flash.data.SQLStatement

Page 8: Introduction to SQLite in Adobe AIR

■ NULL - NULL value (null)

■ INTEGER - signed integer (int)

■ REAL - floating point (Number)

■ TEXT - UTF16 text string (String)

■ BLOB - blob of data

Storage types

Page 9: Introduction to SQLite in Adobe AIR

■ The parameters feature protects your SQL statements from SQL injection

var sqlStatement:SQLStatement = new SQLStatement();sqlStatement.sqlConnection = sqlConn;sqlStatement.text = "SELECT * FROM contacts WHERE id = @ID";sqlStatement.parameters["@ID"] = someVariable;sqlStatement.execute();

■ You can use the @ or : symbol to denote a parameter to be replaced, works both string based as index based

sqlStatement.parameters[0] = someVariable;

SQLStatement Parameters

Page 10: Introduction to SQLite in Adobe AIR

■ Paging allows you to limit the amount of rows you get returned when doing a select operation

var sqlStatement:SQLStatement = new SQLStatement();sqlStatement.sqlConnection = sqlConn;sqlStatement.text = "SELECT * FROM contacts";sqlStatement.execute(10);

■ You can get the next batch of rows returned by calling the next method on the SQLStatement instance

sqlStatement.next();

Result Paging

Page 11: Introduction to SQLite in Adobe AIR

■ SQLResult.data - array of objects for each row of the result

■ SQLResult.complete - returns a boolean indicating whether or not the full result was shown

■ SQLResult.lastInsertRowID - return id for the last row that was inserted

■ SQLResult.rowsAffected - number of rows affected by an insert, update or delete operation

flash.data.SQLResult

Page 12: Introduction to SQLite in Adobe AIR

■ Transactions allow multiple SQL statements to run within one write operation to the database

■ Much more optimized way of handling large insert operations, allows rollback of the complete transaction if an error occurs

var sqlStatement:SQLStatement = new SQLStatement();sqlStatement.sqlConnection = sqlConn;sqlStatement.text = "INSERT into contacts VALUES (@NAME, @EMAIL)";

sqlConn.begin();for(var i:uint=0; i<contacts.length; i++) { sqlStatement.parameters["@NAME"] = contacts[i].name; sqlStatement.parameters["@EMAIL"] = contacts[i].email; sqlStatement.execute();}sqlConn.commit();

Transactions

Page 13: Introduction to SQLite in Adobe AIR

■ Allows you to introspect tables, views, columns, indices, triggers

var sqlConn:SQLConnection = new SQLConnection();sqlConn.open(dbFile);

sqlConn.loadSchema();var result:SQLSchemaResult = sqlConn.getSchemaResult();

var table:SQLTableSchema = result.tables[0];var column:SQLColumnSchema = table.columns[0];

trace(column.name);// returns name of the first column in the first table

Database Schema

Page 14: Introduction to SQLite in Adobe AIR

Demo time

Page 15: Introduction to SQLite in Adobe AIR

■ Adobe AIR Developer Centerwww.adobe.com/devnet/air/

■ AdvancED AIR Applications (coming soon)

■ www.peterelst.com | [email protected]

■ www.adobeusergroup.be

Resources