Question

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?

Was it helpful?

Solution

You forgot to call execute().

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top