【问题标题】:Android DB row delete() with while loop带有while循环的Android DB行删除()
【发布时间】:2013-03-09 23:28:43
【问题描述】:

我已经选择了这段代码,我正在尝试理解并在我的应用程序中工作eclipse 在 while 循环中抛出一个错误,我理解这个错误,但不完全理解这个人是如何让它工作的

public boolean removeRow(int paramInt, String paramString)
{
  int i = 1;
  if (paramString.equals("nameTable"))
  {
   SQLiteDatabase localSQLiteDatabase1 = this.db;
    String str1 = "name_ref_ID=" + paramInt;
    int j = localSQLiteDatabase1.delete("itemTable", str1, null);
    SQLiteDatabase localSQLiteDatabase2 = this.db;
    String str2 = "names_id=" + paramInt;
    if (localSQLiteDatabase2.delete(paramString, str2, null) <= 0);
  }
  while (true)
  {
    return i;// shows errror here as its not returning a bool
    i = 0;
    continue;
    if (paramString.equals("itemTable"))
    {
      SQLiteDatabase localSQLiteDatabase3 = this.db;
      String str3 = "item_id=" + paramInt;
      if (localSQLiteDatabase3.delete(paramString, str3, null) > 0)
      continue;
      i = 0;
      continue;
    }
    i = 0;
  }
}

我也觉得返回不合适,并且会阻止执行循环的其余部分。

【问题讨论】:

  • 对不起,但我已投票决定关闭它,因为这不是一个真正的问题。我意识到您不想了解该代码的工作原理,但简单地说,它没有什么意义。使用while(true) 而不离开会导致无限循环,正如您已经指出的,返回类型是错误的。

标签: android sqlite boolean delete-row


【解决方案1】:

我不确定代码将如何为你得到它的人工作,因为他正在返回我女巫是一个 INT 并且他的函数声明他应该返回一个布尔值(这就是 eclipse 给你错误的原因)。

此外,该函数将在返回时立即停止运行。因此,当 while 循环开始时,它会立即停止。还要记住,while(true) 循环并不是很好的做法。基本上,您创建了一个无限循环并使用一些技巧再次打破它。

要删除子表的一行和所有行,我建议使用两个查询。首先是对子表的删除查询,同时为您的 where 语句使用 Inner query。然后在您的父表上再次删除。

【讨论】:

  • hmm 非常好的主意,可以在 delete() 便捷方法中使用内部查询,如果可以的话,你能举个例子吗?
  • 可以,这里有一个例子link
猜你喜欢
  • 1970-01-01
  • 2019-09-18
  • 2021-12-28
  • 1970-01-01
  • 2015-06-16
  • 1970-01-01
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多