Вывод с локальной БД
Здравствуйте всем.
Есть массив который выводит график data: [ { year: '2013-12-19', value: 72 }, { year: '2013-11-15', value: 69 }, { year: '2013-11-06', value: 68 }, { year: '2013-10-24', value: 66 }, { year: '2013-10-15', value: 65 } ], и есть локальная БД WebSQL вопрос: как можно оттуда получить данные в этот массив? нашел примеры работы с локальной БД, но не пойму как это использовать в моем случае. // получение данных из БД speckyboy.init.getTodo = function(){ var database = speckyboy.init.db; database.transaction(function(tx){ tx.executeSql("SELECT * FROM todo", [], function(tx,result){ for (var i=0; i < result.rows.length; i++) { todo_item = result.rows.item(i).todo_item; todo_date = result.rows.item(i).due_date; } }); }); } |
никто не подскажет ?
|
С локальной базой можно по ODBC через Recorset работать, но как на это посмотрит политика безопасности?
|
Цитата:
меня интересует сам синтаксис вывода. data: [ { year: '2013-12-19', value: 72 }, { year: '2013-11-15', value: 69 }, { year: '2013-11-06', value: 68 }, { year: '2013-10-24', value: 66 }, { year: '2013-10-15', value: 65 } ], как в этот массив селектом вставить нужные данные? |
Я никогда с WebSQL особо не работал, но насколько я понимаю просто селектом оно данные в массиве не обновит. Придется либо циклом перебирать и заменять соответствующие элементы, либо делать новый массив из выборки и заменять им старый. Как-то так:
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> </head> <body> <script> var data = []; var db = openDatabase('mydb', '1.0', 'test', 20000); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS TableName (id unique, year, value)'); tx.executeSql('INSERT INTO TableName (id, year, value) VALUES (1, "2013-11-15", "11")'); tx.executeSql('INSERT INTO TableName (id, year, value) VALUES (2, "2013-10-24", "22")'); tx.executeSql('INSERT INTO TableName (id, year, value) VALUES (3, "2013-12-17", "33")'); }); db.transaction(function (tx) { tx.executeSql('SELECT * FROM TableName', [], function (tx, results) { var len = results.rows.length; for (var i = 0; i < len; i++) { var tmpObj = { year: results.rows.item(i).year, value: results.rows.item(i).value }; data.push(tmpObj); } alert(JSON.stringify(data,'',2)); }, null); }); </script> </body> </html> |
jsnb,
спасибо! |
Если честно, то я так и не разобрался.
попробую еще раз описать задачу - db = openDatabase("speckyboy","1.0","Моя первая БД",200000); if(!db){alert("Failed to connect to database.");} db.transaction(function(tx) { tx.executeSql("SELECT * FROM todo", [], function(tx,result){ for (var i=0; i < result.rows.length; i++) { todo_item = result.rows.item(i).todo_item; todo_due_date = result.rows.item(i).due_date; todo_id = result.rows.item(i).ID; myFnc(todo_item,todo_due_date); } }, function(tx, error){}); }); function myFnc(todo_item,todo_due_date){ arr = todo_item; } в arr я уже получил список дат. Но мне они нужны как то по другому, в виде массива. Что бы подсунуть их сюда - new Morris.Line({ // ID of the element in which to draw the chart. element: 'myfirstchart', // Chart data records -- each entry in this array corresponds to a point on // the chart. data: [ { year: '2013-12-19', value: 72 }, { year: '2013-11-15', value: 69 }, { year: '2013-11-06', value: 68 }, { year: '2013-10-24', value: 66 }, { year: '2013-10-15', value: 65 } ], но как сюда подставить дату и значение полученные из бд никак не пойму. помогите плиз. уже тут я точно не смогу сам дойти :( |
Ну так а я откуда знаю, что у вас там в таблице todo. И я не вижу где у вас в коде объекты с year и value создаются.
|
в таблице todo дата в формате '2013-10-24' и цифра в формате 65
|
Цитата:
|
Часовой пояс GMT +3, время: 06:48. |