0

質問に適切なタイトルが見つかりませんでした。ここに問題があります...sysoのステートメントを 'ingした後、 のステートメントを使用してgetData()、カーソル内の値を出力する必要があります。しかし、そうではありません。例外はなく、エラーはありません。また、取得した出力を LogCat に保存しました。最初の印刷後に出力がないのはなぜですか。cMainTabledisplayDataForMainTable()

try {
    pm = new PortfolioManager(this);
    cMainTable = pm.getData("mainTable");
    if (cMainTable.equals(null)) {
        System.out.println("Null is returned");
    }
    displayDataForMainTable(cMainTable);
}
catch (Exception e) {
    System.out.println("problem at Oncreate Method");
}

getData()方法:

public Cursor getData(String string) {
    System.out.println("Getting Data for Table " + string);
    c = sqlDB.rawQuery("select * from " + string, null);      
    return c;
}

displayDataForMainTable()方法:

private void displayDataForMainTable(Cursor c2) {
    try {
        if (c2 != null) {
            if (c2.getCount() > 0) {
                c2.moveToFirst();
                do {
                    String SNo = c2.getString(c2.getColumnIndex("scriptnumber"));
                    String SName = c2.getString(c2.getColumnIndex("scriptname"));
                    int quant = Integer.parseInt(c2.getString(c2.getColumnIndex("totalquantity")));
                    double avg = Double.parseDouble(c2.getString(c2.getColumnIndex("averageprice")));
                    double cur = Double.parseDouble(c2.getString(c2.getColumnIndex("currentprice")));
                    double log = Double.parseDouble(c2.getString(c2.getColumnIndex("lossorgain")));
                    System.out.println("Inserted Values are ::: " + SNo
                            + " " + SName + " " + String.valueOf(quant)
                            + " " + String.valueOf(avg) + " "
                            + String.valueOf(cur) + " "
                            + String.valueOf(log));
                } while (c2.moveToNext());
            }
        } 
        else {
            System.out.println("Cursor c2 is Empty");
        }
    } catch (Exception e) {
        System.out.println("Exception in displayDataForMainTable");
    }
}

出力

01-18 11:02:27.523: D/dalvikvm(468): GC_EXTERNAL_ALLOC freed 47K, 53% free 2567K/5379K, external 2090K/2137K, paused 45ms
01-18 11:02:33.983: I/System.out(468): Getting Data for Table mainTable
01-18 11:02:36.584: W/KeyCharacterMap(468): No keyboard for id 0
01-18 11:02:36.584: W/KeyCharacterMap(468): Using default keymap: /system/usr/keychars/qwerty.kcm.bin

編集 1 ::: getData()Nasser によって提案されたように変更しましたが、出力は同じままです..

public Cursor getData(String string) {
    System.out.println("Getting Data for Table "+string);
    String table = string;
    sqlDB = getReadableDatabase();
    c = sqlDB.query(table, null, null, null, null, null, null);
    //c = sqlDB.rawQuery("select * from "+string, null);        
    return c;
}

null私が読んだように、列(2番目の引数)に渡すとすべての行が返されます。これが正しければ、結果は同じです。

4

2 に答える 2

0

オブジェクトにsetterGetterクラスセットデータを作成し、そのオブジェクトの配列を返す代わりに、uはdbからカーソルを返すべきではないと思います。

これが同じコードです。試してみてください。

また、ログをそこに置いて、何が起こっているのかを理解できるようにします。

public ArrayList<ContactSetterGetter> getAllNumbers() {
    ArrayList<ContactSetterGetter> setterList = new ArrayList<ContactSetterGetter>();
    db = getWritableDatabase();
    Cursor c = db.query(C_TABLE_NAME, new String[] {"contact_number"},null, null, null, null, null);

    if (c.getCount() != 0) {
        c.moveToFirst();
        do {
            ContactSetterGetter setter = new ContactSetterGetter();
            setter.setContactNumber(c.getString(0));
            setterList.add(setter);
        } while (c.moveToNext());


    }else{
        c.close();
        db.close();
        return setterList;
    }
    c.close();
    db.close();
    return setterList;
    }
于 2013-01-18T06:25:34.857 に答える
0

Eclipse は私に慈悲を示し、出力を表示しているようです。コードを変更して 4 時間以上格闘し、サーフィンをして、最終的にはコードを変更しませんでした。

コーダーとしてどんなに頭が良くても、IDE は常に初心者のように感じさせます。

于 2013-01-18T08:02:46.640 に答える