Можно ли модифицировать локальную базу WebSQL (добавлять столбцы а таблицу, например)

Здравстувйте.
У меня есть одно приложение, там используется WebSQL-база.
Все работает хорошо, база создается, данные записываются и считываются.
Но вот добавить дополнительное поле в таблицу никак не могу. Функция почему-то не срабатывает.
Т.е. созданная база уже никак не обновляется. Если, например, ее из кэша удалить, то потом создастся база с новыми полями, все ок. Но уже без данных :-)
Есть решение?
Спасибо.

// создаем базу
MYDB.init.open = function(){
       MYDB.init.db = openDatabase("MYDB","1.0"," super-data-base",1024*1024*5);
}


//создаем табличку
MYDB.init.createTable = function(){
           var database = MYDB.init.db;
           database.transaction(function(tx){
                  tx.executeSql("CREATE TABLE IF NOT EXISTS mytable (ID INTEGER PRIMARY KEY ASC,item TEXT,description TEXT)", []);
           });
    }

//
//разный функции чтения и добавления записей, которые работают
//

//а вот это уже не работает
MYDB.init.updateTable = function(){
       var database = MYDB.init.db;
       database.transaction(function(tx){
              tx.executeSql("ALTER TABLE mytable ADD time VARCHAR NOT NULL BEFORE description");
       });
}

  • Вопрос задан
  • 3378 просмотров
Решения вопроса 1
blo
@blo
инженер-программист
В tx.executeSql есть коллбеки, в которых можно получить результат и текст ошибки.
Для
tx.executeSql("ALTER TABLE mytable ADD time VARCHAR NOT NULL BEFORE description");

Ошибка:
could not prepare statement (1 near "BEFORE": syntax error)


Для
tx.executeSql("ALTER TABLE mytable ADD time VARCHAR NOT NULL");

Ошибка:
could not prepare statement (1 Cannot add a NOT NULL column with default value NULL)


Попробуйте
ALTER TABLE mytable ADD time VARCHAR NOT NULL DEFAULT ''
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы