我可以在使用 - input type="file" 上传文件时读取文件,但我想从硬编码路径读取 SQLite 文件。sql.js 的文档确实提供了如下所示的解决方案,但我无法使其正常工作。请帮忙。
var fs = require('fs');
var SQL = require('sql.js');
var filebuffer = fs.readFileSync('test.sqlite');
// Load the db
var db = new SQL.Database(filebuffer);
Run Code Online (Sandbox Code Playgroud)
问题可能出在sql.js和test.sqlite文件的位置。如果将它们保存在同一目录中,请'./sql.js' './test.sqlite'使用点和斜线写入名称:
var fs = require('fs');
var SQL = require('./sql.js');
var data = fs.readFileSync('./Chinook_Sqlite.sqlite');
var sqldb = new SQL.Database(data);
Run Code Online (Sandbox Code Playgroud)
我只是运行上面的代码,它在 Node.js ( node test.js) 上运行良好。我的目录有以下文件:
更新 2来自 SQL.js 的人建议对最新版本的 SQL.js使用此代码(请参阅SQL.js wiki):
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();
Run Code Online (Sandbox Code Playgroud)
更新 1如果您需要在浏览器中打开 SQLite 文件,您可以使用以下代码(请参阅此处的工作示例):
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15865 次 |
| 最近记录: |