Websql不适用于phonegap构建
Posted
技术标签:
【中文标题】Websql不适用于phonegap构建【英文标题】:Websql not working on phonegap build 【发布时间】:2015-04-07 12:25:58 【问题描述】:我在 phonegap 上尝试基本的 sql 操作,但它显示一个空白页。 sql 操作在 safari 上正常运行。
代码如下:
<!DOCTYPE html>
<html>
<head>
<script src="cordova.js"></script>
<script type="text/javascript">
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
var msg;
db.transaction(function (tx)
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, log)');
tx.executeSql('INSERT INTO DEMO (id, log) VALUES (1, "foobar")');
tx.executeSql('INSERT INTO DEMO (id, log) VALUES (2, "logmsg")');
msg = '<p>Log message created and row inserted.</p>';
document.querySelector('#status').innerHTML = msg;
);
db.transaction(function (tx)
tx.executeSql('SELECT * FROM DEMO', [], function (tx, results)
var len = results.rows.length, i;
msg = "<p>Found rows: " + len + "</p>";
document.querySelector('#status').innerHTML += msg;
for (i = 0; i < len; i++)
msg = "<p><b>" + results.rows.item(i).log +"</b></p>";
document.querySelector('#status').innerHTML += msg;
, null);
);
</script>
</head>
<body>
<div id="status" name="status">Status Message</div>
</body>
</html>
代码有问题吗?
【问题讨论】:
【参考方案1】:试试这个:
var db = openDatabase('CBDB', '1.0','mySpecialDatabaseThatWontWork',10*1024*1024);
db.transaction(function (tx)
tx.executeSql('DROP TABLE IF EXISTS cb');
alert("dropped table");
createDB();
queryDB();
,
function (tx, error)
// error
alert('0.Something went wrong: '+ error.message);
);
function createDB()
db.transaction(function (tx)
tx.executeSql('CREATE TABLE IF NOT EXISTS cb (id unique, text)');
tx.executeSql('INSERT INTO cb (id, text) VALUES (1, "myTest")');
tx.executeSql('INSERT INTO cb (id, text) VALUES (2, "another")');
tx.executeSql('INSERT INTO cb (id, text) VALUES (3, "andYetAnother")');
tx.executeSql('INSERT INTO cb (id, text) VALUES (4, "ohAndAgain")');
alert("DB success");
,
function (tx, error)
// error
alert('1.Something went wrong: '+ error.message);
);
function queryDB()
db.transaction(function (tx)
tx.executeSql('SELECT * FROM cb',[], function (tx, results)
var rows = results.rows;
alert(rows.length);
for (var index = 0; index < rows.length; index++)
var x = rows.item(index);
alert(x.text);
,
function (tx, error)
// error
alert('2.Something went wrong: '+ error.message);
);
);
【讨论】:
【参考方案2】:您的代码中没有成功和错误方法。 试试这个方法,这样你就可以知道错误在哪里了:
db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
db.transaction(createDB, errorCB, successCB);
function createDB(tx)
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, log)');
tx.executeSql('INSERT INTO DEMO (id, log) VALUES (1, "foobar")');
tx.executeSql('INSERT INTO DEMO (id, log) VALUES (2, "logmsg")');
console.log("Table created");
function errorCB(tx, err)
console.log("Error processing SQL: "+err);
function successCB()
console.log("DB success!");
【讨论】:
谢谢.....但问题是当我将它打包为 phonegap 应用程序时,我无法查看控制台消息..或者有什么方法可以查看它们?..它在 safari 上正常工作没有错误。 你需要添加这个插件来获取控制台消息:“org.apache.cordova.console”以上是关于Websql不适用于phonegap构建的主要内容,如果未能解决你的问题,请参考以下文章
JayData / Phonegap 适用于 iPad 模拟器但不适用于 iPad 设备
相机插件不适用于 Android 的 PhoneGap Build
Phonegap fileTransfer.Download 不适用于 ios phonegap 3.0