0

Androidで簡単なデータベースを作成しました。RowID、UPCCode、Titleの3つの列があります。YouTubeのNewBostonチュートリアルを使用して、データベースにデータを正常に入力しました。ここで必要なのは、データベースを10レコード(たとえば、最後の10回の検索)に制限し、それらを新しいアクティビティのListViewに表示したいことです。

私はそれを達成する方法に関して問題を抱えています、良い助けを見つけることができません..以下に投稿されたコード...

TenSearches.java

package com.rhuf.brandscan;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

public class TenSearches {
    public static final String KEY_ROWID="ID";
    public static final String KEY_UPC="upccode";
    public static final String KEY_TITLE="title";

    public static final String DATABASE_NAME="BrandscanDB";
    public static final String DATABASE_TABLE="ScanTable";
    public static final int DATABASE_VERSION=1;

    private DBHelper helper;
    private final Context context;
    private SQLiteDatabase BrandScanDB;

    public TenSearches(Context c)
    {
        context = c;
    }

    public TenSearches open() throws SQLException
    {
        helper = new DBHelper(context);
        BrandScanDB = helper.getWritableDatabase();
        return this;
    }

    public void close()
    {
        helper.close();
    }

    public long createEntry(String upc, String title)
    {
        ContentValues cv = new ContentValues();
        cv.put(KEY_UPC, upc);
        cv.put(KEY_TITLE, title);
        return BrandScanDB.insert(DATABASE_TABLE, null, cv);
    }

    public String getDataUPC()
    {
        String columns[]=new String[]{KEY_ROWID,KEY_UPC,KEY_TITLE};
        Cursor c = BrandScanDB.query(DATABASE_TABLE, columns, null, null, null, null, KEY_ROWID);
        String result;

        int iRow = c.getColumnIndex(KEY_ROWID);
        int iUPC = c.getColumnIndex(KEY_UPC);
        int iTitle = c.getColumnIndex(KEY_TITLE);

        //Make a listArray or Object Array from the Database entries
        return null;
    }
}

DBHelper.java

package com.rhuf.brandscan;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import com.rhuf.brandscan.TenSearches;

public class DBHelper extends SQLiteOpenHelper{

    public DBHelper(Context context) {
        super(context,TenSearches.DATABASE_NAME,null,TenSearches.DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL("CREATE TABLE " +TenSearches.DATABASE_TABLE +" ("+
                TenSearches.KEY_ROWID +" INTEGER PRIMARY KEY AUTOINCREMENT, " +
                TenSearches.KEY_UPC +" TEXT NOT NULL, " +
                TenSearches.KEY_TITLE + " TEXT NOT NULL);");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS " + TenSearches.DATABASE_TABLE);
        onCreate(db);
    }

}
4

1 に答える 1

1

10エントリだけのデータベースを使用しないでください。最後の10個のエントリ(キュー)のリストを作成し、それをファイルにシリアル化します。DBは、非常に多くのエントリと大量のデータが引き起こす問題のために作成されていますが、数行だけを格納する必要があります。

于 2012-04-13T07:51:52.633 に答える