Air and sqlite problem
Hi,
I have minimized the code from chapter 11 and modified to my need. Mainly, to open and run a query.
The code is:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
width="700" height="400">
<mx:Script>
<![CDATA[
import mx.core.Application;
]]>
</mx:Script>
<mx:Script>
<![CDATA[
import flash.data.SQLResult;
import flash.data.SQLStatement;
import mx.controls.Alert;
import flash.filesystem.File;
import flash.data.SQLConnection;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;
privatevar conn:SQLConnection;
privatevar createTableStatement:SQLStatement;
privatevar selectAllSQL:SQLStatement;
privatefunction openDatabase():void{
conn = new SQLConnection();
conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);
var dbFile:File = File.applicationStorageDirectory.resolvePath("cri2.db3");
if(dbFile.exists) {
conn.addEventListener(SQLEvent.OPEN, openHandler);
} else {
conn.addEventListener(SQLEvent.OPEN, createHandler);
}
conn.open(dbFile);
}
privatefunction errorHandler(event:SQLErrorEvent):void {
var err:String = "Error id:" + event.error.errorID + "\nDetails:" +
event.error.message;
Alert.show(err,"Error");
}
privatefunction createHandler(event:SQLEvent):void {
Alert.show("The database was created successfully", "createHandler");
}
privatefunction openHandler(event:SQLEvent):void {
Alert.show("The database was opened successfully", "openHandler");
}
privatefunction selectAllUsers():void{
var sqlText:String = 'SELECT route FROM cdata';
selectAllSQL = new SQLStatement();
selectAllSQL.sqlConnection = conn;
selectAllSQL.addEventListener(SQLEvent.RESULT, selectAllUsersResult);
selectAllSQL.addEventListener(SQLErrorEvent.ERROR, errorHandler);
selectAllSQL.text = sqlText;
selectAllSQL.execute();
}
privatefunction selectAllUsersResult(event:SQLEvent):void{
var result:SQLResult = selectAllSQL.getResult();
grid.dataProvider = result.data;
}
]]>
</mx:Script>
<mx:Button label="Create or Open Database" click="openDatabase()"/>
<mx:Button click="selectAllUsers()" label="Select All Users"/>
<mx:DataGrid id="grid" width="320" height="100"/>
</mx:WindowedApplication>
Unfortuntly, it does not run and I get this error:
SQLError: 'Error #3115: SQL Error.', details:'no such table: 'cdata'', operation:'execute', detailID:'2013'
at flash.data::SQLStatement/internalExecute()
at flash.data::SQLStatement/execute()
at cri_ax/selectAllUsers()[C:\Users\asher\Documents\Flex Builder 3\cri_ax\src\cri_ax.mxml:58]
at cri_ax/___cri_ax_Button2_click()[C:\Users\asher\Documents\Flex Builder 3\cri_ax\src\cri_ax.mxml:68]
Can someone help me and explain me why it does not work? and how to fix it.
Thanks in advance.
|