Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Chrome Sqlite+;WebSql?_Javascript_Sqlite_Google Chrome_Common Table Expression_Web Sql - Fatal编程技术网

Javascript 如何在Chrome Sqlite+;WebSql?

Javascript 如何在Chrome Sqlite+;WebSql?,javascript,sqlite,google-chrome,common-table-expression,web-sql,Javascript,Sqlite,Google Chrome,Common Table Expression,Web Sql,我目前正在使用Chrome中的WEBSQL数据库 我有一些示例代码,它使用了一个基于chrome的WebSQL数据库和递归CTE(它可以很容易地粘贴到开发人员javascript控制台中进行验证) 如果我在Sqlite Manager firefox扩展中运行这些相同的查询,那么这些CTE查询确实有效。如果我在设备上运行它们(android/cordova使用SqlitePlugin),它们的查询确实有效 Chrome中是否有任何方法可以启用CTE?您必须将SQLite库更新到至少3.8.3版。

我目前正在使用Chrome中的WEBSQL数据库

我有一些示例代码,它使用了一个基于chrome的WebSQL数据库和递归CTE(它可以很容易地粘贴到开发人员javascript控制台中进行验证)

如果我在Sqlite Manager firefox扩展中运行这些相同的查询,那么这些CTE查询确实有效。如果我在设备上运行它们(android/cordova使用SqlitePlugin),它们的查询确实有效


Chrome中是否有任何方法可以启用CTE?

您必须将SQLite库更新到至少3.8.3版。在3.8.3版之后发布的版本是3.8.7.4(在撰写本文时,Chrome中的版本)。我认为编译器标志有问题。然后你必须用其他标志重新编译Chrome。你必须将SQLite库更新到至少3.8.3.is版本3.8.7.4(在撰写本文时Chrome中的版本)在3.8.3之后发布。我认为编译器标志有问题。然后你必须用其他标志重新编译Chrome。
/* Open Database */
var db = window.openDatabase("MyTestDB", "1", "1", 5e6),
/* function that you can execute with any sql  */
testSql = function(sql){
    db.transaction(function _go(tx){
        tx.executeSql(sql, [], done, done);
    })
},
done = function(){ console.log(arguments) },
/* Sample CTE */
cte_not_broken = `WITH RECURSIVE cnt(x) AS 
                (SELECT 1
                UNION ALL
                SELECT 2)
               SELECT * FROM cnt;`
cte_broken = `WITH RECURSIVE cnt(x) AS 
                (SELECT 1
                UNION ALL
                SELECT x+1 FROM cnt LIMIT 10)
               SELECT * FROM cnt;`

testSql(cte_not_broken)
/* returns a SQLResultSet
// { x: 1, x: 2 }  */
testSql(cte_broken)
/* returns a SQLError
// { code: 5, 
//   message: "could not prepare statement (23 not authorized)" } */
testSql("SELECT sqlite_version()")
/* returns a SQLResultSet
// { sqlite_version(): "3.8.7.4" } */