3

EclipseでAdnroidプログラムを作成しました。このプログラムは、csvファイルを読み取り、その情報をSQLiteデータベースに入力します。

dbCursor = database.query(DATABASE_TABLE, new String[]{KEY_ROWID, KEY_ITEMTYPE, KEY_QUANTITY},  null, null, null, null, null);  

    int iRow = dbCursor.getColumnIndex(KEY_ROWID);
    int iType = dbCursor.getColumnIndex(KEY_ITEMTYPE);
    int iQuantity = dbCursor.getColumnIndex(KEY_QUANTITY);

        for(dbCursor.moveToFirst(); !dbCursor.isAfterLast(); dbCursor.moveToNext()){
            allData = allData + " " + dbCursor.getString(iRow) + "\t " + dbCursor.getString(iType) + "\t\t\t " + dbCursor.getString(iQuantity) + "\n";      
        }

次に、テキストビューボックスにallDataを印刷すると、問題なく機能しました。

それから私は使いたかった

dbCursor = database.rawQuery("SELECT KEY_ROWID , SUM(KEY_ITEMTYPE) FROM DATABASE_TABLE GROUP BY KEY_ROWID", null);          
for(dbCursor.moveToFirst(); !dbCursor.isAfterLast(); dbCursor.moveToNext()){

    allDataSum = allDataSum + " " + dbCursor.getString(0);
} //I know this will probably not print what I want correctly but that's a problem for another day

これを印刷しようとすると、「10-25 22:06:35.016:I / Database(1911):sqliteが返されました:エラーコード= 1、msg =そのようなテーブルはありません:DATABASE_TABLE」というエラーが表示されます。

次に、DDMSファイルエクスプローラーを開いてデータベースをデスクトップにコピーし、コマンドツールでデータベースを表示しようとしましたが、「SQLエラー:そのようなテーブルがありません:インベントリ」というエラーが再び表示されました。

データベースにテーブルがないように見える場合、エミュレータは.query()から(ただし.rawQueryからではなく)見たいものをどのように表示できますか?私がクエリとrawQueryを使用することはすべて同じなので、rawQueryなどのデータベースを開かない場合ではありません。

4

2 に答える 2

1

実際の名前を含む DATABASE_TABLE、KEY_ROWID、KEY_ITEMTYPE という名前の静的変数を使用しているようです。これをrawQueryで使用する場合は、次のことを行う必要があります

dbCursor = database.rawQuery("SELECT " + KEY_ROWID + ", SUM(" + KEY_ITEMTYPE + ") FROM " + DATABASE_TABLE + " GROUP BY " + KEY_ROWID, null);

を使用してクエリを作成する場合、これらの変数を引用符で囲んでいないことに注意してdatabase.queryください。これが機能する理由です。

于 2012-10-25T23:37:32.150 に答える
0

SUM() 集計が問題を引き起こしているかどうかはわかりませんが、sqlite コマンド ラインと「.tables」コマンドを使用して、テーブルの存在を再確認できます。

sqlite3 DATABASE
SQLite version 3.7.8 2011-09-19 14:49:19
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sql>.tables
于 2012-10-25T23:37:28.777 に答える