Introduction to SQLite in Adobe AIR 1.5

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    3 Favorites

    Introduction to SQLite in Adobe AIR 1.5 - Presentation Transcript

    1. Introduction to SQLite in Adobe AIR 1.5 Peter Elst - Flash Platform Consultant
    2. Why 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
    3. How do you use it?
    4. How do you use it? 1. Create a File reference
    5. How do you use it? 1. Create a File reference 2. Create an instance of flash.data.SQLConnection and flash.data.SQLStatement
    6. How do you use it? 1. Create a File reference 2. Create an instance of flash.data.SQLConnection and flash.data.SQLStatement 3. Open the database connection
    7. How do you use it? 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
    8. How do you use it? 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()
    9. How do you use it? 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;
    10. 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);
    11. flash.data.SQLConnection ■ Connects to the database file ■ Provides events for asynchronous use ■ Schema access
    12. flash.data.SQLStatement ■ Executes a SQL query on the specified database connection ■ Provides events for asynchronous use ■ Supports result paging
    13. Storage types ■ NULL - NULL value (null) ■ INTEGER - signed integer (int) ■ REAL - floating point (Number) ■ TEXT - UTF16 text string (String) ■ BLOB - blob of data
    14. SQLStatement Parameters ■ 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;
    15. Result Paging ■ 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();
    16. flash.data.SQLResult ■ 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
    17. Transactions ■ 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();
    18. Database Schema ■ 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
    19. Encrypted database support ■ New feature in AIR 1.5 ■ Allows you to encrypt the SQLite database ■ ByteArray as an encryption key when opening the flash.data.SQLConnection ■ Database must be encrypted when it is created ■ Use SQLConnection.reencrypt([ByteArray]) to change the encryption key on a database
    20. Encrypted database support ■ Simple example (not secure) var encryptionKey:ByteArray = new ByteArray(); encryptionKey.writeUTFBytes(\"notverysecretpassword\"); var sqlConn:SQLConnection = new SQLConnection(); sqlConn.openAsync(dbFile, SQLMode.CREATE, null, false, 1024, encryptionKey); ■ For additional security: ■ Bundle the encrypted database with your AIR app ■ Get user input for the password rather than hardcoding it ■ Use the EncryptionGenerator class from as3corelib.swc
    21. Demo time
    22. Resources ■ Adobe AIR Developer Center www.adobe.com/devnet/air/ ■ Adobe AIR 1.5 Cookbook (O'Reilly) ■ www.peterelst.com | info@peterelst.com

    + Peter ElstPeter Elst, 11 months ago

    custom

    3914 views, 3 favs, 6 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 3914
      • 3634 on SlideShare
      • 280 from embeds
    • Comments 0
    • Favorites 3
    • Downloads 74
    Most viewed embeds
    • 236 views on http://www.peterelst.com
    • 24 views on http://blog.alec-c4.com
    • 15 views on http://rodion.com.ua
    • 2 views on http://cbrueggenolte.de
    • 2 views on file://

    more

    All embeds
    • 236 views on http://www.peterelst.com
    • 24 views on http://blog.alec-c4.com
    • 15 views on http://rodion.com.ua
    • 2 views on http://cbrueggenolte.de
    • 2 views on file://
    • 1 views on http://blob.mn

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories