我尝试使用SQL.JS来构建一个简单的本地SQLite数据库浏览器,而不需要任何服务器交互。
我正在使用GUI example page进行测试。
HTML GUI示例页面使用<input type='file' id='dbfile'>
为了允许用户选择数据库文件,HTML页面调用GUI.JS,如下所示:
var dbFileElm = document.getElementById('dbfile');
// Load a db from a file
dbFileElm.onchange = function() {
var f = dbFileElm.files[0];
var r = new FileReader();
r.onload = function() {
worker.onmessage = function () {
toc("Loading database from file");
// Show the schema of the loaded database
editor.setValue("SELECT `name`, `sql`\n FROM `sqlite_master`\n WHERE type='table';");
execEditorContents();
};
tic();
try {
worker.postMessage({action:'open',buffer:r.result}, [r.result]);
}
catch(exception) {
worker.postMessage({action:'open',buffer:r.result});
}
}
r.readAsArrayBuffer(f);
}
它工作正常。
现在我想强制使用特定的数据库名称和位置。我尝试使用:
<input type='text' value='<MY_DB_FILE>' id='dbfile'>
(其中MY_DB_FILE是我的数据库文件的名称,位于与HTML页面相同的文件夹中)。我也改变了
dbFileElm.onchange = function()
加入dbFileElm.onload = function()
但没有任何作用,ID dbfile似乎不包含任何可用的数据,并且不会调用该函数。