javascript sql.js给出错误未捕获错误:文件已加密或不是数据库

时间:2016-09-22 10:54:58

标签: javascript node.js sqlite sql.js

以下是我的HTML页面中的<script>标记,但却给出了错误:

未捕获错误:文件已加密或不是数据库

<script>
   var file = "/data/myDB.sqlite";
   var db = new SQL.Database(file);
   db.run("SELECT * FROM WEBUSERS", function(err, rows) {
      rows.forEach(function (row) { 
         console.log('WEBUSERS Created User: '+row.USERNAME);
      });
    });
</script>

1 个答案:

答案 0 :(得分:0)

正如评论中所提到的,构造函数不接受字符串,它需要一个包含SQLite数据库的Uint8Array。

执行此操作的一种方法是使用ajax请求将数据库作为数组缓冲区并将其转换为Uint8Array。

var file = "/data/myDB.sqlite";

var xhr = new XMLHttpRequest();
xhr.open('GET', file, true);
xhr.responseType = 'arraybuffer';
xhr.onload = function() {
    var data = new Uint8Array(this.response);
    var db = new SQL.Database(data);
    db.run("SELECT * FROM WEBUSERS", function(err, rows) {
        rows.forEach(function(row) {
            console.log('WEBUSERS Created User: ' + row.USERNAME);
        });
    });
};
xhr.send();