質問

So I am developing this add-on using the MDN's Add-on Builder and need to connect with the SQLite Database. The connection gets created fine and insertion is fine as long as I am inserting values without binding parameters(that is, through executeSimpleSQL()). As soon as I use the createStatement() method to INSERT values, it does not work. Here's what I have done so far.

let file = FileUtils.getFile("Desk", ["my_db_file_name.sqlite"]);
let mDBConn = Services.storage.openDatabase(file); 
mDBConn.executeSimpleSQL("CREATE TEMP TABLE IF NOT EXISTS element (rating VARCHAR(50))");

let stmt = mDBConn.createStatement("INSERT INTO element (rating) VALUES(:value)");
stmt.params.value = 13;

//mDBConn.executeSimpleSQL("INSERT INTO element (rating) VALUES(13)");

var statement = mDBConn.createStatement("SELECT * FROM element WHERE rating = :rat");
statement.params.rat = 13;
try {
  while (statement.step()) {
    let value = statement.row.rating;
    console.log(value);
  }
}
finally {
  statement.reset();
}

Note that the SELECT statement with the bound parameters works fine, it's just the INSERT statement that's problematic.

Any ideas?

役に立ちましたか?

解決

You forgot to call execute().

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top