-4

我面临错误无法从 int 转换为布尔值,这是我遇到此问题的代码。

private boolean seeDB()
  {
    int i = 1;
    SQLiteDatabase localSQLiteDatabase = null;
    try
    {
      localSQLiteDatabase = SQLiteDatabase.openDatabase(DB_PATH + DB_NAME, null, 1);
      localSQLiteDatabase = localSQLiteDatabase;
      label01: 
          if (localSQLiteDatabase != null)
        localSQLiteDatabase.close();
      if (localSQLiteDatabase != null);
      while (true)
      {
        return i;
      }
    }
    catch (SQLiteException localSQLiteException)
    {
      break label01;
    }
  }
4

5 回答 5

2

您的方法返回类型boolean

private boolean seeDB()

你回来了 int

 return i;

所以这个错误是正确的。

另一个错误是

  if (localSQLiteDatabase != null);   <--

这种情况以额外的方式结束;

最后,您应该重新考虑您的逻辑,告诉我们您要做什么。你可能会得到更好的逻辑。

这里有一些关于你在做什么的想法

 private boolean closeDB()
      {
        SQLiteDatabase localSQLiteDatabase = null;
        try
        {
          localSQLiteDatabase = SQLiteDatabase.openDatabase(DB_PATH + DB_NAME, null, 1);
          if (localSQLiteDatabase != null){
            localSQLiteDatabase.close();
            return true; // opended DB closed 
          }else{
            return false;//  no connections opened right now.
          }

        }
        catch (SQLiteException localSQLiteException){
      }
于 2013-10-10T05:42:15.210 回答
1

您的方法假设返回 boolean :

private boolean seeDB()

但你正在返回一个 int

    return i;

i 被定义为 int

int i = 1;
于 2013-10-10T05:42:44.497 回答
1

嗯,是的,问题就在这里:

while (true)
{
    return i;
}

该方法被声明为 return boolean,但i被声明为int. 那是行不通的。您需要将返回类型更改为int,或者确定何时返回true以及何时返回false

此外:

  • 的值i始终1
  • 你在一个while(true)循环中返回它,这是没有意义的
  • catch据我所知,您打破块中标签的方法是无效的。
  • 你在if这里有一个毫无意义的陈述:

    if (localSQLiteDatabase != null);
    

你实际上想用这段代码实现什么?老实说,它看起来只是被严重反编译的代码。我建议你从头开始,准确地确定你想要实现的目标,然后从那里开始。您当前的代码是如此混乱,以至于无济于事。

于 2013-10-10T05:43:20.480 回答
0

您的方法返回类型是布尔值,您正在尝试返回 int 值

于 2013-10-10T05:43:17.187 回答
0

如果 i 是一种标志,那么它应该是布尔类型而不是 int。您的方法的返回类型是 booelan。为 i 使用 int 类型的任何具体原因。

-里亚

于 2013-10-10T05:46:10.447 回答