android数据库

Mau*_*lik -2 java database android

如何在Android编程中打开数据库?

Joh*_*ith 6

像这样扩展SQLiteOpenHelper类:

private static class MyDbHelper extends SQLiteOpenHelper
{

    public MyDbHelper(Context context, String description, CursorFactory factory, int version)
    {
        super(context, description, factory, version);          
    }

    @Override
    public void onCreate(SQLiteDatabase _db)
    {
        _db.execSQL(CREATE_TABLE_1);
        _db.execSQL(CREATE_TABLE_2);
        _db.execSQL(CREATE_TABLE_3);
        ..etc
    }

    @Override
    public void onUpgrade(SQLiteDatabase _db, int oldVersion, int newVersion)
    {
        // Log the version upgrade.
        Log.w("MyDbAdapter", "Upgrading from version " + oldVersion + " to " +
                newVersion + ", which will destroy all old data.");

        _db.execSQL("DROP TABLE IF EXISTS " + TBL_ONE);
        _db.execSQL("DROP TABLE IF EXISTS " + TBL_TWO);
        _db.execSQL("DROP TABLE IF EXISTS " + TBL_THREE);

        onCreate(_db);          
    }

}
Run Code Online (Sandbox Code Playgroud)

创建一个使用dbhelper的数据适配器类:

private SQLiteDatabase db;  
private MyDbHelper dbHelper;

public MyDbAdapter(Context context)
{       
    dbHelper = new MyDbHelper(context, DATABASE_NAME, null, DB_VERSION);
}


public MyDbAdapter open() throws SQLException
{
    try
    {
        db = dbHelper.getWritableDatabase();
    }
    catch (SQLiteException ex)
    {
        db = dbHelper.getReadableDatabase();
    }

    return this;
}

public void close()
{
    db.close();
}
Run Code Online (Sandbox Code Playgroud)

然后它可以这样使用:

 public class ListsDAO
 {
private Context mContext;
private MyDbAdapter db;

public ListsDAO(Context context)
{
    mContext = context;
    db = new MyDbAdapter(mContext);
}

public List<MyObject> getAllObjects()
{
    List<MyObject> objects = new ArrayList<MyObject>();

    db.open();
    Cursor cursor = db.getAllObjects();     

    if (cursor.moveToFirst())
    {
Run Code Online (Sandbox Code Playgroud)

...等等一旦你将光标放在行列表上,你可以逐步完成它们获取表格中的各个列:

例如description = cursor.getString(descriptionColumn);

诸如CREATE_TABLE_1之类的静态字符串基本上是用于创建表的SQL语句.您可能还需要一个不那么激烈的数据库升级路由,而不是简单地删除所有表并再次重新创建它们.