2012-04-03 3 views
1
  1. アドオンで使用されるSQLiteデータファイルをdata.url()でアクセスするファイルの1つにすることはできますか?でのみ実行されるFirefoxアドオン用のSQLiteファイルを初期化する方法は?

  2. もしそうなら、どのように一方がServices.storage.openDatabase(オフにし)

  3. ない場合、それは特定のコードのために可能である(存在しない場合のCREATE TABLE ...)アドオンの最初の実行?

答えて

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 
+0

データベースが既に存在するかどうかを確認することをお勧めします。 –