懒惰的编译器/调试器?

时间:2012-11-30 14:41:13

标签: android xamarin.android

我正在寻找几个小时,以找到解决此问题的方法:

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

 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;        
    }

那么app / compiler / debugger为什么会这样呢?我有什么错误,但我现在无法理解?

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

1 个答案:

答案 0 :(得分:0)

您的DBQueryTable方法会返回光标。只要您在以下行中关闭连接,该操作就会失效:

connection1.CloseDatabase();

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