Copy link to clipboard
Copied
Hello. I just want a help about my code because when i close the application the data that i add is not been saved.
Here is my code of save:
function saveData(event:MouseEvent):void
{
status.text = "Saving data";
insertStmt = new SQLStatement();
insertStmt.sqlConnection = conn;
var sql:String = "INSERT INTO employees (firstName, lastName, salary) VALUES (:param, :param1, :param2)";
insertStmt.text = sql;
insertStmt.parameters[":param"] = firstName.text;
insertStmt.parameters[":param1"] = lastName.text;
insertStmt.parameters[":param2"] = salary.text;
insertStmt.addEventListener(SQLEvent.RESULT, insertResult);
insertStmt.addEventListener(SQLErrorEvent.ERROR, insertError);
insertStmt.execute();
}
Here is the full code:
import fl.data.DataProvider;
import flash.data.SQLResult;
import flash.data.SQLConnection;
import flash.filesystem.File;
import flash.data.SQLStatement;
import flash.data.SQLConnection;
var conn:SQLConnection;
var createStmt:SQLStatement;
var insertStmt:SQLStatement;
var insertStmt2:SQLStatement;
var insertStmt3:SQLStatement;
var selectStmt:SQLStatement;
var insert1Complete:Boolean = false;
var insert2Complete:Boolean = false;
saveBtn.addEventListener(MouseEvent.CLICK, saveData);
loadBtn.addEventListener(MouseEvent.CLICK, getData);
init();
function init():void
{
conn = new SQLConnection();
conn.addEventListener(SQLEvent.OPEN, openSuccess);
conn.addEventListener(SQLErrorEvent.ERROR, openFailure);
status.text = "Creating and opening database";
// Use these two lines for an on-disk database
// but be aware that the second time you run the app you'll get errors from
// creating duplicate records.
// var dbFile:File = File.applicationStorageDirectory.resolvePath("DBSample.db");
// conn.openAsync(dbFile);
// Use this line for an in-memory database
conn.openAsync(null);
}
function openSuccess(event:SQLEvent):void
{
conn.removeEventListener(SQLEvent.OPEN, openSuccess);
conn.removeEventListener(SQLErrorEvent.ERROR, openFailure);
createTable();
}
function openFailure(event:SQLErrorEvent):void
{
conn.removeEventListener(SQLEvent.OPEN, openSuccess);
conn.removeEventListener(SQLErrorEvent.ERROR, openFailure);
status.text = "Error opening database";
trace("event.error.message:", event.error.message);
trace("event.error.details:", event.error.details);
}
function createTable():void
{
status.text = "Creating table";
createStmt = new SQLStatement();
createStmt.sqlConnection = conn;
var sql:String = "";
sql += "CREATE TABLE IF NOT EXISTS employees (";
sql += " empId INTEGER PRIMARY KEY AUTOINCREMENT,";
sql += " firstName TEXT,";
sql += " lastName TEXT,";
sql += " salary NUMERIC CHECK (salary >= 0) DEFAULT 0";
sql += ")";
createStmt.text = sql;
createStmt.addEventListener(SQLEvent.RESULT, createResult);
createStmt.addEventListener(SQLErrorEvent.ERROR, createError);
createStmt.execute();
}
function createResult(event:SQLEvent):void
{
createStmt.removeEventListener(SQLEvent.RESULT, createResult);
createStmt.removeEventListener(SQLErrorEvent.ERROR, createError);
addData();
}
function createError(event:SQLErrorEvent):void
{
status.text = "Error creating table";
createStmt.removeEventListener(SQLEvent.RESULT, createResult);
createStmt.removeEventListener(SQLErrorEvent.ERROR, createError);
trace("CREATE TABLE error:", event.error);
trace("event.error.message:", event.error.message);
trace("event.error.details:", event.error.details);
}
function addData():void
{
status.text = "Adding data to table";
insertStmt = new SQLStatement();
insertStmt.sqlConnection = conn;
var sql:String = "";
sql += "INSERT INTO employees (firstName, lastName, salary) ";
sql += "VALUES ('Bob', 'Smith', 8000)";
insertStmt.text = sql;
insertStmt.addEventListener(SQLEvent.RESULT, insertResult);
insertStmt.addEventListener(SQLErrorEvent.ERROR, insertError);
insertStmt.execute();
insertStmt2 = new SQLStatement();
insertStmt2.sqlConnection = conn;
var sql2:String = "";
sql2 += "INSERT INTO employees (firstName, lastName, salary) ";
sql2 += "VALUES ('John', 'Jones', 8200)";
insertStmt2.text = sql2;
insertStmt2.addEventListener(SQLEvent.RESULT, insertResult);
insertStmt2.addEventListener(SQLErrorEvent.ERROR, insertError);
insertStmt2.execute();
}
function insertResult(event:SQLEvent):void
{
var stmt:SQLStatement = event.target as SQLStatement;
stmt.removeEventListener(SQLEvent.RESULT, insertResult);
stmt.removeEventListener(SQLErrorEvent.ERROR, insertError);
if (stmt == insertStmt)
{
insert1Complete = true;
}
else
{
insert2Complete = true;
}
if (insert1Complete && insert2Complete)
{
status.text = "Ready to load data";
}
}
function insertError(event:SQLErrorEvent):void
{
status.text = "Error inserting data";
insertStmt.removeEventListener(SQLEvent.RESULT, insertResult);
insertStmt.removeEventListener(SQLErrorEvent.ERROR, insertError);
trace("INSERT error:", event.error);
trace("event.error.message:", event.error.message);
trace("event.error.details:", event.error.details);
}
function getData(event:MouseEvent):void
{
status.text = "Loading data";
selectStmt = new SQLStatement();
selectStmt.sqlConnection = conn;
var sql:String = "SELECT empId, firstName, lastName, salary FROM employees";
selectStmt.text = sql;
selectStmt.addEventListener(SQLEvent.RESULT, selectResult);
selectStmt.addEventListener(SQLErrorEvent.ERROR, selectError);
selectStmt.execute();
}
function saveData(event:MouseEvent):void
{
status.text = "Saving data";
insertStmt = new SQLStatement();
insertStmt.sqlConnection = conn;
var sql:String = "INSERT INTO employees (firstName, lastName, salary) VALUES (:param, :param1, :param2)";
insertStmt.text = sql;
insertStmt.parameters[":param"] = firstName.text;
insertStmt.parameters[":param1"] = lastName.text;
insertStmt.parameters[":param2"] = salary.text;
insertStmt.addEventListener(SQLEvent.RESULT, insertResult);
insertStmt.addEventListener(SQLErrorEvent.ERROR, insertError);
insertStmt.execute();
}
function selectResult(event:SQLEvent):void
{
status.text = "Data loaded";
selectStmt.removeEventListener(SQLEvent.RESULT, selectResult);
selectStmt.removeEventListener(SQLErrorEvent.ERROR, selectError);
var result:SQLResult = selectStmt.getResult();
resultsGrid.dataProvider = new DataProvider(result.data);
// var numRows:int = result.data.length;
// for (var i:int = 0; i < numRows; i++)
// {
// var output:String = "";
// for (var prop:String in result.data)
// {
// output += prop + ": " + result.data[prop] + "; ";
// }
// trace("row[" + i.toString() + "]\t", output);
// }
}
function selectError(event:SQLErrorEvent):void
{
status.text = "Error loading data";
selectStmt.removeEventListener(SQLEvent.RESULT, selectResult);
selectStmt.removeEventListener(SQLErrorEvent.ERROR, selectError);
trace("SELECT error:", event.error);
trace("event.error.message:", event.error.message);
trace("event.error.details:", event.error.details);
}
Have something to add?
Find more inspiration, events, and resources on the new Adobe Community
Explore Now