为什么我不能使用indexedDB.open连接到我的SQLite数据库?

时间:2013-01-28 10:47:05

标签: sqlite indexeddb

我有一个Sqlite数据库。我想通过indexedDB连接到我的文件。 我也尝试了indexedDB,它在配置文件中创建了新的sqlite文件。这个新的sqlite文件有一个名为“database”的表。该表包含我的文件名。

我的源代码是:

var indexedDB = window.indexedDB 
    || window.webkitIndexedDB 
    || window.mozIndexedDB
    || window.msIndexedDB;

var db;
var request = indexedDB.open("rule");
request.onerror = function(evt) {
  console.log("Database error code: " + evt.target.errorCode);
};
request.onsuccess = function(evt) {
  console.log("Database connect success");
  db = request.result;
};

代码运行时,db变量为空。

2 个答案:

答案 0 :(得分:1)

这是不可能的。

Firefox stores its own IndexedDB databases in an SQLite format期间,您无法直接查询或访问这些数据库。相反,您需要使用异步IDB API。

答案 1 :(得分:0)

如果我正确理解您的问题,您有一个预先存在的SQLite数据库,并且您尝试使用IndexedDB连接到它?

正如编辑在他的回答中所说,不可能IndexedDB不是用于访问数据库的通用接口。该名称有点欺骗性, IndexedDB不是关系数据库;它实际上允许您在浏览器中创建Object Stores以存储JavaScript对象。这些存储是使用JavaScript在浏览器中创建的,Firefox中的当前实现确实将IndexedDB数据存储在SQLite数据库中,但the spec确实存在不要求这样,每个浏览器都可以存储数据但是他们喜欢在幕后。其他浏览器和Firefox的未来版本可能会或可能不会使用SQLite,这并不重要,因为IndexedDB无法提供对它所使用的后端数据库的访问权限。即使Firefox中的当前实现也不仅仅依赖于SQLite,它还存储FileBlob个对象separate from the SQLite DB等内容。