|
|
|||||
Похоже мы приближаемся к истине
По этому пути действительно файл базы около 1Кб, тогда как реальный 500 Кб. Просто поменял файлы и вроде все ОК, пока не выводил результаты. Не пойму ничего с этой файловой системой. Добавлено через 3 минуты Мне как распространять такое приложение? Просить юзера скопировать файл в папку такую-то лежащую там-то? Неужели нельзя проще сделать - искать файл там же где лежит SWF? |
|
|||||
Цитата:
http://*************/clip/m57729/1310...-clip-37kb.png Файл profisend.db - это моя чистая база (структура таблиц, + некоторые данные) Вообще лучше работать с юзерской папкой, в ней всегда открыт доступ. Так вот. Этот файл я копирую в папку программы, которая находится в папке File.userDirectory. После копирования - устанавливаю коннект. Почему копирую - смотри ниже. Если искать файл в директории приложения - нужно использовать не applicationStorageDirectory, а просто applicationDirectory. После установки - эта папка является местом, куда и было установлено приложение. Но тут косяк. Если установил в программ файлс - записать ты туда ничего не сможешь без админских прав (hello, Windows 7). Если база readonly - сойдет. Не ридонли - копирую "шаблон" базы туда, куда мне нужно и где гарантировано будет доступ на запись. Зато есть один бонус. Если юзер испортил базу - базу можно всегда восстановить из "шаблона", который включен в установщик приложения и находится рядом с ним в applicationDirectory. Это в моем случае, а как поступить тебе - уж не знаю, потому что не знаю что с ней будет происходить.
__________________
Кодинг, багинг, алгоритминг. me @ |
|
|||||
DaFive, что то я решил по твоему методу скопировать файл базы в applicationStorageDirectory.
Использую такой код при инициализации приложения: protected function application1_creationCompleteHandler(event:FlexEvent):void { var dbFile:File = File.applicationStorageDirectory.resolvePath("mydb.db"); if (dbFile.exists == false || dbFile.size < 1) { var sourceFile:File = File.documentsDirectory; sourceFile = sourceFile.resolvePath("mydb.db"); var destination:File = File.documentsDirectory; destination = dbFile; try { sourceFile.copyTo(destination, true); } catch (error:Error) { trace("Error:", error.message); } } conn = new SQLConnection(); conn.openAsync(dbFile); conn.addEventListener(SQLEvent.OPEN, openSuccess); conn.addEventListener(SQLErrorEvent.ERROR, openFailure); } //Ну и т.д. Вот думаю, по идее у меня приложение только для чтения, писать от приложения ничего не будет. Может быть мне действительно все пути переписать на applicationDirectory? Но на будущее все же нужно и нормальное решение знать... |
|
|||||
File.documentsDirectory - папка с документами юзера. Уверен, что туда записывается нормально? Пихай просто в userDirectory/название_программы_к_примеру/.
Хотя если для чтения - можешь прописать и на applicationDirectory. Я вот так делаю в своей (на XP и 7 летает нормально): var app_data_folder:File = File.userDirectory.resolvePath('Protechs sms-client'); var originalDB:File = File.applicationDirectory.resolvePath("profisend.db"); var destination:File = app_data_folder.resolvePath("profisend.db"); if (!destination.exists) { originalDB.copyTo(destination, false); }
__________________
Кодинг, багинг, алгоритминг. me @ |
Часовой пояс GMT +4, время: 12:32. |
|
« Предыдущая тема | Следующая тема » |
|
|