我有一小段代码从本地SQLite数据库(到AIR应用程序)检索数据:
import flash.filesystem.File;
import flash.data.SQLConnection;
import flash.data.SQLStatement;
import flash.events.SQLEvent;
init();
var myConn;
function init():void
{
var file = new File("app-storage:/game.sqlite");
myConn = new SQLConnection();
myConn.addEventListener(SQLEvent.OPEN, myTables);
myConn.open(file);
}
function myTables(e)
{
var sqlState = new SQLStatement();
sqlState.sqlConnection = myConn;
sqlState.text = "SELECT * FROM background";
sqlState.addEventListener(SQLEvent.RESULT, showData);
sqlState.execute();
}
//
function showData(e)
{
trace("data: "+e);
}
它只是一个“概念证明”代码段,它“存在”在Flash IDE时间轴的第一帧中。怎么了? 当我编译SWF(AIR for iPhone)时,出现此错误:
SQLError: 'Error #3115: SQL Error.', details:'no such table: 'background'', operation:'execute', detailID:'2013'
我创建了一个带有Firefox扩展的基本数据库(SQLiteManager)。什么可能导致此错误? 该表存在!
答案 0 :(得分:0)
错误清楚地表明该表不存在
所以你没有创造它或者我不知道或者
Anyway, here is a good proof of concept for you.
也许那个你可以尝试在手机上工作。
[编辑]
你可能想尝试这样的事情。
file = File.applicationStorageDirectory.resolvePath("tut.db");
myConn = new SQLConnection();
try{
myConn.open(file , SQLMode.CREATE);
}catch(e:SQLError){
Alert.show("SQL Error Occured: ", e.message);
}
答案 1 :(得分:0)
确保数据库的路径是正确的,如果您可以在数据库中看到该表,那么路径是错误的,它可能正在寻找其他数据库。只是一个想法