在phonegap数据库表中插入数据?
Posted
技术标签:
【中文标题】在phonegap数据库表中插入数据?【英文标题】:Insert the data in phonegap database table? 【发布时间】:2012-07-28 07:25:53 【问题描述】:在我的应用程序中,我想在表中插入值。我已经在 index.html 文件的 onDeviceReady() 方法中创建了数据库。
<!DOCTYPE html>
<!-- Auto Generated with Sencha Architect -->
<!-- Modifications to this file will be overwritten. -->
<html>
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Teritree</title>
<script type="text/javascript" id="phonegap" src=
"cordova-2.0.0.js">
</script>
<script type="text/javascript" src="barcodescanner.js">
</script>
<script src="sencha-touch-all.js" type="text/javascript">
</script>
<link rel="stylesheet" type="text/css" href="app.css">
<script type="text/javascript" src="app/Ext.ux.touch.Rating.js">
</script>
<script type="text/javascript" src="app/app.js">
</script>
<script type="text/javascript">
Ext.Loader.setConfig( disableCaching: false );
Ext.Ajax.setDisableCaching(false);
</script>
<script type="text/javascript" charset="utf-8">
var pictureSource; // picture source
var destinationType; // sets the format of returned value
var mydb;
// Wait for PhoneGap to connect with the device
function onLoad()
document.addEventListener("deviceready",onDeviceReady,false);
// PhoneGap is ready to be used!
function onDeviceReady()
console.log("it is in ondevice ready method..");
mydb = window.openDatabase("teritreeDb", "1.0", "TestDB", 10000);
console.log("it is in ondevice ready method..1");
mydb.transaction(populateDB, errorCB, successCB);
console.log("it is in ondevice ready method..2");
function populateDB(tx)
console.log("it is in populateDB----------1");
tx.executeSql('DROP TABLE IF EXISTS DEMO', function ()
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)', function ()
console.log("Table created");
);
);
// Transaction error callback
//
function errorCB(tx, err)
alert("Error processing SQL: "+err);
// Transaction success callback
//
function successCB()
alert("success!");
</script>
<script type="text/javascript">
if (!Ext.browser.is.WebKit)
alert("The current browser is unsupported.\n\nSupported browsers:\n" +
"Google Chrome\n" +
"Apple Safari\n" +
"Mobile Safari (ios)\n" +
"android Browser\n" +
"BlackBerry Browser"
);
</script>
</head>
<body>
</body>
</html>
现在我有一个注册屏幕,在注册屏幕上我有提交按钮。所以如果我点击提交按钮,所有的细节都应该存储在数据库中,意味着在 DEMO 表中。所以在控制器中,我正在编写按钮事件,
onSubmitButtonTap : function(button, e, options)
mydb = window.openDatabase("appDb", "1.0", "Test DB", 1000000);
mydb.transaction(storeCustomerDetails, error, success);
function storeCustomerDetails(tx)
tx.executeSql('insert into DEMO (id,data) values("1","Hello")');
tx.executeSql('insert into DEMO (id,data) values("2","Hello World")');
function error()
alert("data is not inserted");
function success()
alert("data is succesfully inserted");
,
但它给了我警报,没有插入数据。 我点击了链接:Phonegap DB Link
请帮忙..
【问题讨论】:
您使用的是哪个 Phonegap 版本? 我在浏览器中签入..db 已创建..但表未创建 这里还是一样..请帮忙.. 【参考方案1】:使用 Cordova 2.0.0,您的问题将得到解决。您将能够在文件资源管理器中看到您创建的数据库。如果对您有帮助,请告诉我。
【讨论】:
添加 2.0 后,我遇到了问题.. 无法解决 Lorg/apache/cordova/CordovaWebViewClient 中的新实例 159 (Landroid/webkit/WebResourceResponse;); 好的..在 xml 文件夹中,现在只有 config.xml 文件。因为以前它是两个文件:plugins.xml 和 corodova.xml。我删除了这两个并添加了 config.xml 好的..但现在我也看不到日志文件..我在 index.html 文件中添加的日志文件 我编辑了我的 index.html..你可以看到..但仍然没有得到日志和数据库也没有创建.. 我没有看到你在哪里调用了 onLoad() 来注册监听器......更正......【参考方案2】:Arindam,不要忘记默认情况下 sql 的执行是异步的。因此,没有人保证您的 sql 将按照您在函数 populateDB(tx) 中定义的顺序执行。例如。它可以先执行创建而不是删除...
为了确保顺序,您必须在回调函数中定义后续调用
function populateDB(tx)
tx.executeSql('DROP TABLE IF EXISTS DEMO', function ()
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)', function ()
console.log("Table created");
);
);
干杯,奥列格
【讨论】:
问题是,我无法在 Eclipse 的文件资源管理器中看到数据库。甚至在平板电脑 SD 卡中也看不到。 没有运气是什么意思?您在我的场景中收到“表已创建”消息吗? 即使我检查了日志消息也没有。但没有找到。所以这意味着,数据库没有创建??以上是关于在phonegap数据库表中插入数据?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 PhoneGap Android 应用程序在将一堆数据插入 SQL 时崩溃?
Phonegap - 如何将 $1,743 插入 sql 事务数据库?
插入数据库表中一条记录同时也插入另一个表中的SQL语句怎么写