【问题标题】:Insert, update and Delete issues in Phonegap for SQLite在 Phonegap for SQLite 中插入、更新和删除问题
【发布时间】:2014-09-07 00:52:24
【问题描述】:

我想使用 Phonegap 在 SQLite 中插入更新和删除表的数据,我知道这样做的方式,但问题是每当我尝试插入相同的记录两次时,都会出现错误,这是完美的,但是当我两次删除同一行时,它每次都进入成功功能为什么会这样?更新函数也是如此,我不明白为什么会这样,我在代码中做了什么愚蠢的错误吗?请帮我 更新功能

db.transaction(function(tx){
    var abc= "UPDATE table_name SET a= ? WHERE id = ?";
    tx.executeSql(abc, [a, id],function SuccessUpdate(tx,result){
        alert("success");
        alert("Last inserted ID = " + result.insertId);
    },
    function errorUpdate(error){
    alert("Error processing SQL : "+error.code);
    });
    });

删除函数

db.transaction(function(tx){
    var abc= "DELETE FROM table_name WHERE id=?";
    tx.executeSql(abc, [id], function(){
    alert("success");
    });
    }, function errorCB(err){
        alert("error");
       console.warn("Error processing SQL: "+err.code); 
    }, function (){
        alert("success");
    });

这个问题可能听起来很傻,但我不知道为什么会这样,我搜索了这个但找不到任何有用的东西

【问题讨论】:

  • 应该怎么做?
  • 我想它应该给我一个错误@CL。你不这么认为吗?因为我正在尝试删除已删除的记录,或者与更新相同的情况,已删除的记录无法更新,所以它应该给我错误。
  • @user3060230 您应该使用result.rowsAffected。如果小于 1,则表示更新/删除不成功。 result.insertId 应该用于 INSERT 语句。

标签: java sqlite cordova


【解决方案1】:

这就是 SQL 的工作方式。 UPDATE 和 DELETE 语句影响与 WHERE 子句匹配的所有行;这可能是没有,也可能是一或多行。

之后可以使用结果对象的rowsAffected 属性读取要编号或受影响的行:

tx.executeSql("UPDATE ...", [...], function SuccessUpdate(tx,result){
    if (result.rowsAffected < 1)
        ...
}

【讨论】:

  • 所以你的意思是,即使没有这样的条目,它总是能让我成功?
【解决方案2】:

这是因为如果列存在并且只有行没有找到,DELETE 不会返回错误。

您可以在 Android SQLiteDatabase 上执行此操作:

int result = myDB.delete("table_name", "WHERE name=?", new String[] { "Jack" });

if (result == 0)
    Log.e("myDatabase", "Nothing was deleted (row not found)");

这里的变量结果根据Android Docs 保存受影响的行数。

编辑:

抱歉,没有注意到这是为 Phonegap 准备的。

但是根据this source,您可以尝试这个:

db.transaction(function(tx){
    var abc= "DELETE table_name SET a= ? WHERE id = ?";
    tx.executeSql(abc, [a, id],function SuccessUpdate(tx,result){
        if (!result.rowsAffected) {
            alert("Nothing was deleted");
        } else {
            alert("Delete successful");
        }
    },
    function errorUpdate(error){
            alert("Error processing SQL : "+error.code);
    });
});

注意:我没有对此进行测试,因为我没有使用此框架的经验,抱歉。

【讨论】:

  • 这不是 JavaScript。
  • 这是针对核心 android 我要求使用 Phonegap 的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-07
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多