Проблемы с чтением SQlite из Actionsipt 3 (AIR или Flash) - PullRequest
2 голосов
/ 17 июля 2011

У меня возникли некоторые проблемы при попытке прочитать базу данных SQlite из флэш-памяти с использованием AS3. База данных была создана с помощью этого сценария php:

$db = new PDO('sqlite:abaco.sqlite');
$db->exec("CREATE TABLE 'abacodata' ('mod' varchar(25) NOT NULL,'name' varchar(25) NOT NULL,'pos' int(3) NOT NULL,'posx' int(11) NOT NULL,'posy' int(11) NOT NULL,'image' varchar(50) NOT NULL,'type' int(1) NOT NULL);");  
$lines=file("TEMPDATA.txt");
foreach($lines as $v) {
   $values = explode(',',$v);
   $sql = "INSERT INTO abacodata VALUES ('".$values[0]."', '".$values[1]."', '".$values[2]."', '".$values[3]."', '".$values[4]."', '".$values[6]."', '".$values[5]."');";
   $db->exec($sql);
}

Как видите, это создает базу данных примерно так: enter image description here После этого мне нужно прочитать эту базу данных в AS3, используя этот очень простой скрипт:

trace("INITIATED");
import flash.filesystem.File;
import flash.data.*;
var dbFile:File= File.applicationStorageDirectory.resolvePath("abaco.sqlite");
var sqlConn:SQLConnection = new SQLConnection();
var sqlStatement:SQLStatement = new SQLStatement();
sqlConn.open(dbFile);
sqlStatement.sqlConnection = sqlConn;
sqlStatement.text = "SELECT * FROM abacodata;";
sqlStatement.execute();
var result:Array = sqlStatement.getResult().data;
trace(result[0]['mod']);

Скрипт может соединиться с файлом, но не может найти таблицу !; enter image description here

Кто-нибудь имеет представление о том, что я делаю неправильно? Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 17 июля 2011

Вы видите, действительно ли вы подключились к правильному файлу базы данных?

Я бы проверил 3 следующие вещи:

1- Указывает ли объект файла правильный файл; Вы можете проверить это, отследив nativePath:

trace(dbFile.nativePath);

2- Убедитесь, что при открытии этой базы данных вы открываете существующую базу данных вместо создания новой. Открой свою связь таким образом; если файл db не существует, вы получите ошибку :

sqlConn.open(dbFile, SQLMode.READ);

3- Наконец, убедитесь, что ваша таблица существует, сделав запрос к таблице sqlite_master:

sqlStatement.text = "select * from sqlite_master;";
sqlStatement.execute();
0 голосов
/ 17 июля 2011

Это может быть конфликт формата между инструментом, который вы используете для создания базы данных, и реализацией Adobe.

Попробуйте запустить тот же сценарий создания из Actionscript и посмотрите, не появляется ли такая же ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...