Почему я не могу подключиться к своей базе данных SQLite с помощью indexedDB.open?

У меня есть база данных Sqlite. Я хочу подключиться к своему файлу с помощью indexedDB. Также я попробовал indexedDB, он создал новый файл sqlite в профиле. Этот новый файл sqlite имеет таблицу с именем «база данных». Эта таблица содержит имя моего файла.

Мой исходный код:

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 пуста.


person user3035239    schedule 28.01.2013    source источник
comment
никогда не пробовал, но я не думаю, что это возможно так, как вы хотите. Насколько я знаю, вы можете создать базу данных indexeddb, только используя метод open with version и инициировав структуру в коде js.   -  person Kristof Degrave    schedule 28.01.2013


Ответы (2)


Это невозможно.

Хотя Firefox хранит свои собственные базы данных IndexedDB в формате SQLite, вы не можете запрашивать эти базы данных или обращаться к ним напрямую. Вместо этого вам нужно использовать асинхронный API IDB.

person buley    schedule 29.01.2013
comment
Спасибо за вашу помощь, но я подключаюсь к своей базе данных в браузере Firefox. IDB API мне не помог... - person user3035239; 30.01.2013
comment
Нет... :( Могу ли я использовать Storage API? - person user3035239; 31.01.2013
comment
@samira, я не думаю, что ты понимаешь, как работает StackOverflow. То, что ответ не тот, который вы ищете, не означает, что он неверен. И когда у вас есть вопрос, отличный от того, который вы задали, вы публикуете новый вопрос. - person buley; 01.02.2013

Если я правильно понимаю ваш вопрос, у вас есть уже существующая база данных SQLite, и вы пытаетесь подключиться к ней с помощью IndexedDB?

Как сказал редактор в своем ответе, это невозможно. IndexedDB не является универсальным интерфейсом для доступа к базам данных. Название обманчиво, IndexedDB не является реляционной базой данных; на самом деле он позволяет вам создавать хранилища объектов в браузере для хранения объектов JavaScript. Эти хранилища создаются в браузере, использующем JavaScript, текущая реализация в Firefox сохраняет данные IndexedDB в базе данных SQLite, но спецификация не требует этого, каждый браузер может хранить данные так, как им нравится за кулисами. Другие браузеры и будущие версии Firefox могут использовать или не использовать SQLite вообще, опять же, это не имеет особого значения, потому что IndexedDB не предоставляет доступ к внутренним базам данных, которые он использует в любом случае. Даже текущая реализация в Firefox не только полагается на SQLite, она хранит такие вещи, как File и Blob объекты отдельно от БД SQLite.

person Useless Code    schedule 31.01.2013