diff --git a/SQLitePlugin.coffee.md b/SQLitePlugin.coffee.md index 0f588bbcc..3908b54c3 100644 --- a/SQLitePlugin.coffee.md +++ b/SQLitePlugin.coffee.md @@ -238,13 +238,24 @@ qid = @executes.length + params = [] + if !!values && values.constructor == Array + for v in values + t = typeof v + params.push ( + if v == null || v == undefined || t == 'number' || t == 'string' then v + else if v instanceof Blob then v.valueOf() + else v.toString() + ) + @executes.push success: success error: error qid: qid sql: sql - params: values || [] + #params: values || [] + params: params return diff --git a/test-www/www/index.html b/test-www/www/index.html index e7c1ec6e2..8a989890e 100755 --- a/test-www/www/index.html +++ b/test-www/www/index.html @@ -736,7 +736,6 @@ }); }); - // XXX reproduce BUG #144: test(suiteName + "executeSql parameter as array", function() { stop(); var db = openDatabase("array-parameter.db", "1.0", "Demo", DEFAULT_SIZE); @@ -752,8 +751,7 @@ start(); var row = res.rows.item(0); strictEqual(row.data1, 'abc', "data1: string"); - // XXX BUG #144 - only works with Web SQL: - if (isWebSql) strictEqual(row.data2, '1,2,3', "data2: array should have been inserted as text (string)"); + strictEqual(row.data2, '1,2,3', "data2: array should have been inserted as text (string)"); }); }); }); diff --git a/www/SQLitePlugin.js b/www/SQLitePlugin.js index e66952f80..730a1a750 100644 --- a/www/SQLitePlugin.js +++ b/www/SQLitePlugin.js @@ -247,14 +247,22 @@ }; SQLitePluginTransaction.prototype.addStatement = function(sql, values, success, error) { - var qid; + var params, qid, t, v, _i, _len; qid = this.executes.length; + params = []; + if (!!values && values.constructor === Array) { + for (_i = 0, _len = values.length; _i < _len; _i++) { + v = values[_i]; + t = typeof v; + params.push((v === null || v === void 0 || t === 'number' || t === 'string' ? v : v instanceof Blob ? v.valueOf() : v.toString())); + } + } this.executes.push({ success: success, error: error, qid: qid, sql: sql, - params: values || [] + params: params }); };