アドオンで使用されるSQLiteデータファイルをdata.url()でアクセスするファイルの1つにすることはできますか?でのみ実行されるFirefoxアドオン用のSQLiteファイルを初期化する方法は?
もしそうなら、どのように一方がServices.storage.openDatabase(オフにし)
ない場合、それは特定のコードのために可能である(存在しない場合のCREATE TABLE ...)アドオンの最初の実行?
1
A
答えて
4
)data.urlでアクセスされたファイルの1(するアドオンが使用するSQLiteのデータファイルのことが可能ですか?
いいえアドオンSDK 1.5の時点で、拡張機能はインストール時に非圧縮ではなくなりました。圧縮されたXPIファイルはディスクに保存されています(パフォーマンスに優れています)。しかし、SQLiteは物理的なファイルを必要としますが、アーカイブの中には存在しません。
もしそうでなければ、特定のコード(CREATE TABLE IF EXISTS ...)はアドオンの初回実行時にのみ実行できますか?
確かにこのようにしてはいけません。何らかの理由でデータベースファイルが削除された場合はどうですか?参考のため
var dbFile = FileUtils.getFile("ProfD", "foobar.sqlite");
var alreadyExists = dbFile.exists();
var dbConnection = Services.storage.openDatabase(dbFile);
if (!alreadyExists)
connection.createTable("foo", "id INTEGER PRIMARY KEY, ...");
::これは質問のいずれかを答えていないFileUtils.jsm
-2
Components.utils.import("resource://gre/modules/Services.jsm");
Components.utils.import("resource://gre/modules/FileUtils.jsm");
let file = FileUtils.getFile("ProfD", ["my_db_file_name.sqlite"]);
let mDBConn = Services.storage.openDatabase(file); // Will also create the file if it does not exist
データベースが既に存在するかどうかを確認することをお勧めします。 –