首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SQLite从磁盘读取sql.js数据库

使用SQLite从磁盘读取sql.js数据库
EN

Stack Overflow用户
提问于 2015-01-21 11:51:19
回答 1查看 17.2K关注 0票数 4

当文件被上传时,我可以使用-输入type=" file“来读取它,但是我想从硬编码路径读取SQLite文件。sql.js的文档确实提供了如下所示的解决方案,但我无法让它正常工作。请帮帮忙。

代码语言:javascript
复制
var fs = require('fs');
var SQL = require('sql.js');
var filebuffer = fs.readFileSync('test.sqlite');
// Load the db
var db = new SQL.Database(filebuffer);
  • 我希望它非常简单,任何使用sql.js的人都能回答这个问题。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-21 14:23:59

问题可能在于sql.jstest.sqlite文件的位置。如果将它们保存在同一个目录中,请用点和斜杠将名称写为'./sql.js' './test.sqlite'

代码语言:javascript
复制
var fs = require('fs');
var SQL = require('./sql.js');
var data = fs.readFileSync('./Chinook_Sqlite.sqlite');
var sqldb = new SQL.Database(data);

我只是运行上面的代码,它在Node.js (node test.js)中运行得很好。我的目录有以下文件:

  • test.js -来自上述示例的文件
  • sql.js -库文件
  • Chinook_Sqlite.sqlite - Chinook测试数据库

UPDATE 2来自SQL.js的人员建议在最新版本的SQL.js中使用此代码(参见SQL.js维基):

代码语言:javascript
复制
var xhr = new XMLHttpRequest();
xhr.open('GET', '/path/to/database.sqlite', true);
xhr.responseType = 'arraybuffer';

xhr.onload = function(e) {
    var uInt8Array = new Uint8Array(this.response);
    var db = new SQL.Database(uInt8Array);
    var contents = db.exec("SELECT * FROM my_table");
    // contents is now [{columns:['col1','col2',...], values:[[first row], [second row], ...]}]
};
xhr.send();

UPDATE 1如果需要在浏览器中打开SQLite文件,可以使用下面的代码(参见工作示例这里):

代码语言:javascript
复制
<script src="sql.js"></script>
<script>
    function loadBinaryFile(path,success) {
        var xhr = new XMLHttpRequest();
        xhr.open("GET", path, true); 
        xhr.responseType = "arraybuffer";
        xhr.onload = function() {
            var data = new Uint8Array(xhr.response);
            var arr = new Array();
            for(var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]);
            success(arr.join(""));
        };
        xhr.send();
    };

    loadBinaryFile('./Chinook_Sqlite.sqlite', function(data){
        var sqldb = new SQL.Database(data);
        // Database is ready
        var res = db.exec("SELECT * FROM Genre");
    });
</script>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28066570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档