誰もがデータベースを作成するときにアンドロイドデータベースのワークフローを説明することができます

流れるパッケージは、データベース接続クラスに関するものです。それはデータベースを作成し、いくつかの他のメソッドを含んでいます。しかし、私はそれがどのように動作するのか、そしてワークフローが何であるかはっきりしていません。

package panda.com.db;

import android.content.ContentValues;
import android.content.Context;
import android.database.*;
import android.util.Log;
import android.database.sqlite.*;

public class DBAdapter{
    public static final String KEY_ROWID = "_id";
    public static final String KEY_ISBN = "isbn";
    public static final String KEY_TITLE = "title";
    public static final String KEY_PUBLISHER = "publisher";
    private static final String TAG = "DBAdapter";
    private static final String DATABASE_NAME = "books";
    private static final String DATABASE_TABLE = "titles";
    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_CREATE =
    "create table titles (_id integer primary key autoincrement, "
    + "isbn text not null, title text not null, "
    + "publisher text not null);";
    private final Context context;
    private DatabaseHelper DBHelper;
    private SQLiteDatabase db;

    public DBAdapter(Context ctx){
        this.context=ctx;
        DBHelper=new DatabaseHelper(context);
    }

    private static class DatabaseHelper extends SQLiteOpenHelper{
        DatabaseHelper(Context context){
            super(context,DATABASE_NAME,null,DATABASE_VERSION);
        }
        @Override
        public void onCreate(SQLiteDatabase db){
            db.execSQL(DATABASE_CREATE);
        }
        @Override
        public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
            Log.w(TAG, "Upgrading database from version " + oldVersion + "to" + newVersion + ", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXISTS titles");
            onCreate(db);
        }
    }
    public DBAdapter open() throws SQLException
    {
        db=DBHelper.getWritableDatabase();
        return this;
    }
    public void close(){
        DBHelper.close();
    }
    public long insertTitle(String isbn, String title, String publisher){
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_ISBN, isbn);
        initialValues.put(KEY_TITLE, title);
        initialValues.put(KEY_PUBLISHER, publisher);
        return db.insert(DATABASE_TABLE, null, initialValues);
    }
    public boolean deleteTitle(long rowId){
        return db.delete(DATABASE_TABLE, KEY_ROWID+"="+rowId, null)>0;
    }
    public Cursor getAlltitles(){
        return db.query(DATABASE_TABLE, new String[]{
                KEY_ROWID,
                KEY_ISBN,
                KEY_TITLE,
                KEY_PUBLISHER
        }, null, null, null, null, null);
    }
    public Cursor getTitle(long rowId) throws SQLException
    {
        Cursor mCursor = 
                db.query(true, DATABASE_TABLE, new String[]{
                        KEY_ROWID,
                        KEY_ISBN,
                        KEY_TITLE,
                        KEY_PUBLISHER
                }, KEY_ROWID+"="+rowId, null, null, null, null, null);
        if(mCursor != null){
            mCursor.moveToFirst();
        }
        return mCursor;
    }
    public boolean updateTitle(long rowId, String isbn,String title,String publisher)
    {
        ContentValues args=new ContentValues();
        args.put(KEY_ISBN, title);
        args.put(KEY_TITLE, title);
        args.put(KEY_PUBLISHER, publisher);
        return db.update(DATABASE_TABLE, args, KEY_ROWID+"="+rowId, null)>0;
    }
}
0

1 答え

あなたは2つのクラスを持っています -

  1. DatabaseHelper - this class is responsible for creating Your db and upgrading it if needed (onUpgrade method will execute if newVersion > oldVersion).

  2. DBAdapter class contains method for inserting, updating and fetching records from the DB. These methods are relevant for the specific DB they were planned to work with, as opposed to DatabaseHelper methods, which are generic to sqlite DB.

私はそれがあなたを助けることを望む

3
追加された
私はまだこれらのコードがいつ公開されているのか理解していませんpublic DBAdapter(Context ctx){this.context = ctx; DBHelper =新しいDatabaseHelper(コンテキスト); }が実行されますか?このクラスに "ctx"を渡す方法は?
追加された 著者 panda,
public DBAdapter(Context ctx)は、DBAdapterクラスのコンストラクタです。たとえば、次のようにDBAdapterクラスをインスタンス化するときに実行されます。DBAdapter dbAdapter = new DBAdapter(application_context);
追加された 著者 Udi Idan,