在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语句怎么写

我是springboot新手,需要在oracle表中插入json数据,避免重复插入

根据特定条件从表中获取已插入数据的插入查询