让我们使用一个很棒的演示作为示例here。
假设我创建了5个便笺作为“管理员”。我的浏览器有一个带有这5个便签的SQLite DB及其各自的位置和文本。然后,我将此DB文件导出到托管页面的本地服务器。然后让我们说另一台计算机上的“用户”加载此页面,默认情况下会看到我的5个便签;如何使页面从本地文件加载SQLite DB,例如/var/www/html/db_files/5-sticky-notes.db,以便最终用户可以与我的便签进行交互?
这是从个人浏览器加载最终用户数据库的代码:
var db;
try {
if (window.openDatabase) {
db = openDatabase("5-sticky-notes", "1.0", "HTML5 Database API example", 200000);
if (!db)
alert("Failed to open the database on disk. This is probably because the version was bad or there is not enough space left in this domain's quota");
} else
alert("Couldn't open the database. Please try with a WebKit nightly with this feature enabled");
} catch(err) {
}
答案 0 :(得分:2)
我想我找到了这个老路的答案:
<强> DEMO Here 强>
简短示例代码(由网站提供):
$(function(){
var demoRunning = false;
$("#startTest").click(function(){
if(!demoRunning){
$(this).addClass("running");
$("#demoRunning").show();
$("#results").text("running...");
demoRunning = true;
try {
html5sql.openDatabase("demo", "Demo Database", 5*1024*1024);
$.get('demo-statements.sql',function(sql){ //Your server created sticky notes database file
var startTime = new Date();
html5sql.process(
sql,
function(){ //Success
var endTime = new Date();
$("#results").text("Table with 11000 entries created in: " +
((endTime - startTime) / 1000) + "s");
$("#startTest").removeClass("running");
$("#demoRunning").hide();
demoRunning = false;
},
function(error, failingQuery){ //Failure
$("#results").text("Error: " + error.message);
$("#startTest").removeClass("running");
$("#demoRunning").hide();
demoRunning = false;
}
);
});
} catch (error) {
$("#results").text("Error: " + error.message);
$("#startTest").removeClass("running");
$("#demoRunning").hide();
demoRunning = false;
}
}
})
});
其他信息
这仅适用于支持 webDB 标准的浏览器(桌面版或移动版)
答案 1 :(得分:1)
在浏览器中无法原生地执行此操作,但我认为这是可能的。
您已发起Ajax请求以将数据从本地数据库发送到服务器,然后访问您网站的新用户也会收到Ajax请求,要求将数据从服务器下载到其本地数据库中。
非常粗糙的伪代码:
var db;
try
{
if (window.openDatabase)
{
db = openDatabase("5-sticky-notes", "1.0", "HTML5 Database API example", 200000);
var stickyNotesInDatabase // some code to determine if sticky notes are in the users local database
if(!stickyNotesInDatabase)
{
$.getJson('/GetStickyNotes', function(data)
{
// Load data into database from JSON 'data' variable
});
}
}
else
{
// Handle no database support
}
}
catch(err)
{
// Handle error
}
但是,如果您要允许其他人查看您的便签,为什么还要使用本地HTML5数据库呢?只需将它们存储在服务器上即可?
编辑:我还应该指出,WebSQL是一个死亡标准,逐步淘汰将被IndexedDB取代。