从SQLite数据库中检索数据时出现#3115错误

时间:2011-10-04 15:57:01

标签: flash actionscript-3 sqlite air

我有一小段代码从本地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)。什么可能导致此错误? 该表存在!

2 个答案:

答案 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)

确保数据库的路径是正确的,如果您可以在数据库中看到该表,那么路径是错误的,它可能正在寻找其他数据库。只是一个想法