2017-03-23 197 views
1

我試圖在本地數據庫中插入數據。當我打開數據庫時,它會給我那個錯誤。我搜索並發現它必須在try catch塊中。我做到了,但仍然是同樣的問題。錯誤:SecurityError:DOM異常18 Tizen

var APP_ID = "C44F83E2-6CCA-9BAD-FF5A-CE8C869F7300"; 
var SECRET_KEY = "39C7F777-F0A0-4DEB-FF35-D147FB5BEB00"; 
var VERSION = "v1"; 
var categories = [] ; 
var createStatement = "CREATE TABLE IF NOT EXISTS categories(id INT NOT NULL PRIMARY KEY" 
    +",name VARCHAR(36) NOT NULL " 
    +",iconName VARCHAR(20) NOT NULL" 
    +",category VARCHAR(19) NOT NULL" 
    +",score INT NOT NULL)"; 

var selectAllStatement = "SELECT * FROM categories"; 

var insertStatement = "INSERT INTO categories(name,category,iconName,score) VALUES (?,?,?,?)"; 

var dropStatement = "DROP TABLE categories"; 
var current_item=0; 
var total_item=2; 
var db; 
//database varsion setting 
var version = 1.0; 
//database name setting 
var dbName = "GuessWhat"; 
//database display name setting 
var dbDisplayName = "Guess_What_db"; 
//database size setting 
var dbSize = 2 * 1024 * 1024; 

function selectDB() { 
if (window.openDatabase) { 
    //openDatabase(name, version, displayname, estimatedsize, callback); 
    try { 
    db = openDatabase(dbName, version, dbDisplayName, dbSize); 
    } catch (e) { 
     // TODO: handle exception 
     console.log(e); 
    } 


    dropTable(db); 
    createTable(db); 
    console.log("test base"); 
    for(var c in categories) 
    {console.log(categories[c].getName()); 
      insertData(db,categories[c].getName()+"",categories[c].getCategory()+"",categories[c].getIconName()+"",categories[c].getScore()); 
    } 
    //inserting data in table 

    console.log("success"); 

} else { 
    alert("Web SQL Database not supported in this browser"); 
} 
}; 
function createTable(db) { 
try { 
    db.transaction(function (t) { 
     t.executeSql(createStatement, []); 
    }); 
} catch (e) { 
// TODO: handle exception 
} 

}; 
function insertData(db, name,category ,iconName,score) { 
try { 
    db.transaction(function (e) { 
     console.log("start insert"); 
     e.executeSql(insertStatement,[name,category,iconName,score], onSuccess, onError); 
    }); 
} catch (e) { 
// TODO: handle exception 
console.log(e); 
} 

}; 
function onSuccess(e) { }; 
function onError(e) {console.log("erreur insertion"); }; 
function dropTable(db) { 
try { 
    db.transaction(function (e) { 
     e.executeSql(dropStatement); 
    }); 
    } catch (e) { 
// TODO: handle exception 
} 

}; 
window.onload = function() { 
// TODO:: Do your initialization job 
Backendless.initApp(APP_ID, SECRET_KEY, VERSION); 
fetchingFirstPageAsync(); 

selectDB(); 
// add eventListener for tizenhwkey 
document.addEventListener('tizenhwkey', function(e) { 
    if(e.keyName == "back") 
try { 
    tizen.application.getCurrentApplication().exit(); 
} catch (ignore) { 
} 
}); 

navigation("DOWN"); 

document.addEventListener('keydown', function(e) { 
    switch(e.keyCode){ 
    case TvKeyCode.KEY_LEFT: //LEFT arrow  
     break; 
    case TvKeyCode.KEY_UP: //UP arrow 
     navigation("UP"); 
     break; 
    case TvKeyCode.KEY_RIGHT : //RIGHT arrow   
     break; 
    case TvKeyCode.KEY_DOWN: //DOWN arrow 
     navigation("DOWN");   
     break; 
    case TvKeyCode.KEY_ENTER: //OK button 
     go_to(current_item); 
     console.log("ENTER Button"); 
     break; 
    default: 
     console.log("Key code : " + e.keyCode); 
     break;   
    } 
}); 

}; 

function tester(){ 
console.log("TESTTTTTTT"); 
}; 

function navigation(direction){ 
$("#btn_"+current_item).removeClass("selected_btn"); 
if(direction == "UP"){ 
    if(current_item == 1) 
     current_item = total_item; 
    else 
     current_item--; 

}else if(direction == "DOWN"){ 
    if(current_item == total_item) 
     current_item = 1; 
    else 
     current_item++; 
} 
$("#btn_"+current_item).addClass("selected_btn"); 
}; 

function go_to(current_item){ 
sessionStorage.setItem("key", current_item); 
if(current_item==2) 
    parent.location="about.html"; 
if(current_item==1){ 
    console.log("redirection"); 
    parent.location="menu.html"; 
} 
}; 
function fetchingFirstPageAsync(){ 
var startTime = (new Date()).getMilliseconds(); 
var c = Backendless.Persistence.of("CategoriesObject").find(); 
console.log("============ Fetching first page using the SYNC API ============"); 
console.log("Loaded " + c.data.length + "restaurant objects"); 
console.log("Total restaurants in the Backendless storage - " + c.totalObjects); 

for(var i = 0; i < c.data.length; i++) { 
    categories.push(new Category(c.data[i].name+"",c.data[i].iconName+"",c.data[i].score+"",c.data[i].category+"")); 
    console.log(c.data[i].category) ; 

} 
for (var i in categories) { 

    console.log(categories[i].getName()); 
} 

console.log("Total time (ms) - " + ((new Date()).getMilliseconds() - startTime)); 
}; 
+0

你使用它的Tizen移動?或齒輪? –

+0

這是三星智能電視 –

回答

0

根據該文件,目前WebSQL移動應用程序的支持。 我在可穿戴設備中嘗試過,但沒有奏效。它在移動工作。

main.js

 var db; 
     //database version setting 
     var version = 1.0; 
     //database name setting 
     var dbName = "tizendb"; 
     //database display name setting 
     var dbDisplayName = "tizen_test_db"; 
     //database size setting 
     var dbSize = 2 * 1024 * 1024; 

     function selectDB() { 
      if (window.openDatabase) { 
       //openDatabase(name, version, displayname, estimatedsize, callback); 
       db = openDatabase(dbName, version, dbDisplayName, dbSize); 

       dropTable(db); 
       createTable(db); 

       //inserting data in table 
       insertData(db, "tizenTest01", "We are pleased to announce that Tizen 2.0"); 
       insertData(db, "tizenTest02", "device vendors. We encourage you to download"); 
       insertData(db, "tizenTest03", "installed and used it. If you have questions"); 
       insertData(db, "tizenTest04", "This release includes many new features"); 
       insertData(db, "tizenTest05", "Highlights of this release include"); 

       dataView(db); 

      } else { 
       alert("Web SQL Database is not supported in this browser"); 
      } 
     } 

     //reads and displays values from the 'places' table 
     function dataView(db) { 
      var html = document.getElementById("tbody01"); 
      var ddlHtml = document.getElementById("ddlTitle"); 
      html.innerHTML = ""; 
      ddlHtml.innerHTML = ""; 

      db.transaction(function (t) { 
       t.executeSql("SELECT * FROM tizenTable", [], 
       function (tran, r) { 
        ddlHtml.innerHTML = "<option value='all'>all</option>"; 
        for (var i = 0; i < r.rows.length; i++) { 
         var id = r.rows.item(i).id; 
         var title = r.rows.item(i).title; 
         var content = r.rows.item(i).content; 
         var insertday = r.rows.item(i).insertDay; 

         //data list rendering 
         if (html) { 
          html.innerHTML += "<tr><td>" + id + "</td><td>" + title + "</td><td>" + content + "</td><td>" + insertday + "</td></tr>"; 
         } 

         //select box rendering 
         if (ddlHtml) { 
          ddlHtml.innerHTML += "<option value=" + id + ">" + title + "</option>"; 
         } 
        } 
       }, 
       function (t, e) { alert("Error:" + e.message); } 
      ); 
      }); 
     } 

     // create table 
     function createTable(db) { 
      db.transaction(function (t) { 
       t.executeSql("CREATE TABLE tizenTable (id INTEGER PRIMARY KEY, title TEXT, content TEXT, insertDay DATETIME)", []); 
      }); 
     } 

     //inserting data in table 
     function insertData(db, title, context) { 
      db.transaction(function (e) { 
       var day = new Date(); 
       e.executeSql("INSERT INTO tizenTable(title, content, insertDay) VALUES (?, ?, ?)", [title, context, day], onSuccess, onError); 
      }); 
     } 

     function onSuccess(e) { } 
     function onError(e) { } 

     // drop table 
     function dropTable(db) { 
      db.transaction(function (e) { 
       e.executeSql("DROP TABLE tizenTable"); 
      }); 
     } 

     //Select the data conditions 
     function dataChange(value) { 
      if (value != "all") { 
       var html = document.getElementById("tbody01"); 
       html.innerHTML = ""; 
       db.transaction(function (t) { 
        t.executeSql("SELECT * FROM tizenTable WHERE id=?", [value], 
       function (tran, r) { 
        for (var i = 0; i < r.rows.length; i++) { 
         var id = r.rows.item(i).id; 
         var title = r.rows.item(i).title; 
         var content = r.rows.item(i).content; 
         var insertday = r.rows.item(i).insertDay; 

         if (html) { 
          html.innerHTML += "<tr><td>" + id + "</td><td>" + title + "</td><td>" + content + "</td><td>" + insertday + "</td></tr>"; 
         } 
        } 
       }, 
       function (t, e) { alert("Error:" + e.message); } 
      ); 
       }); 
      } else { 
       dataView(db); 
      } 
     } 

     window.onload = function() { 
      selectDB(); 
     }; 

的Index.html

<thead> 
    <tr> 
     <th>id</th> 
     <th>title</th> 
     <th>context</th> 
     <th>date</th> 
    </tr> 
</thead> 
<tbody id="tbody01"> 
</tbody> 
+0

我已經遵循此代碼來創建我的,我也有同樣的問題。但從你說的我明白,智能電視不支持Web SQL –

相關問題