0

この次のコードを実行すると、トースト メッセージに次の例外が表示されます: Java.lang.IllegalStateExcepton: Bad request for field slot 0,-1. numRows = 1, numColumns = 1.

SQLiteDatabase sb;
    String g="o";
    try {
        sb=SQLiteDatabase.openDatabase("data/data/com.example.datatestx/ma", null, SQLiteDatabase.CREATE_IF_NECESSARY);

        sb.execSQL("create table if not exists blac  (" + " phone text  , " + " ftime  text, " + " ttime text );  "    );

        sb.execSQL( "insert into blac(phone, ftime,ttime) values ('01711233434', '333333','33333' );"  );
        sb.execSQL( "insert into blac(phone, ftime,ttime) values ('01761233433', '777' ,'77777');"  );
        sb.execSQL( "insert into blac(phone, ftime,ttime) values ('01712333323', '999','33433' );"  );
        Cursor c1 = sb.rawQuery( "select count(*) as Total from blac", null);
    if(c1.getCount()>0){

    c1.moveToFirst();
    do {
        g=g+c1.getString(c1.getColumnIndex("phone"));

    }while(c1.moveToNext());
    }  c1.close();
        sb.close();

         Toast.makeText(getApplicationContext(), "Success!"+g, Toast.LENGTH_LONG).show();   
    }
    catch (Exception e)
    {

    Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();     
    }

なぜこれが機能しないのかわかりません。誰でも助けることができますか?

4

1 に答える 1

0

を要求するSELECTクエリCOUNT(*) as Totalでは、結果セットには、合計行数を含む「Total」という名前の 1 つのフィールドが含まれることを意味します。

phoneしたがって、この結果セットからフィールドを読み取るのは意味がありません...

交換してみる

Cursor c1 = sb.rawQuery( "select count(*) as Total from blac", null);

Cursor c1 = sb.rawQuery( "select * from blac", null);
于 2013-01-17T10:00:06.853 に答える