0

我现在正在寻找几个小时来解决这个问题:

在我的 android 应用程序的最开始,向用户显示了一个带有按钮的布局。如果他单击“任务”按钮,则应该会弹出一个 listView(另一个活动和布局)以向他显示所有可用的任务,并且单击一个他可以做更多的事情,但它们不是我的问题所必需的。关键是,该应用程序不会从数据库中获取任何数据,但是当我进入或跨过为所有DBStuff调用方法的行时,它可以工作。以下是必要的行:

 if (connection1.OpenDatabase(1, getDataBaseName()))
        {
            CTask = connection1.DBQueryTable(getDataBaseName(), "Tasks", TempFieldT);
            CEquipment = connection1.DBQueryTable(getDataBaseName(), "Equipment", TempFieldE);
            connection1.CloseDatabase();
        }

所以他会跑过这些线,执行下面的线,但不会返回任何数据,当我没有用断点和步骤监督它时。当我这样做时,所有事情都按应有的方式工作。

应用程序在这个地方运行的数据库东西。

public Android.Database.ICursor DBQueryTable(string DataBaseName, string TableName, string[] Fields)
    {
        FindDBPath(DataBaseName);
        Android.Database.ICursor c;
        string TempF = "";
        string str = "";
        foreach (string n in Fields)
        { TempF += n + ","; }
        SQLQuery = "SELECT " + (str = TempF.TrimEnd(',')) +" FROM " + TableName;
        c = sqldTemp.RawQuery(SQLQuery, null);
        return c;        
    }

那么为什么应用程序/编译器/调试器会这样呢?我有什么错误,但我现在不知道吗?

Ps:是的,我知道有一个查询功能,但这里没有必要,只要它可以解决我的问题。

4

1 回答 1

0

您的DBQueryTable方法返回一个cursor。关闭以下行中的连接后,它将立即失效:

connection1.CloseDatabase();

只要您需要光标,就应该保持连接打开。例如,您可以从游标中获取所有数据,然后关闭连接。

于 2012-11-30T14:46:55.860 回答