像这样扩展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语句.您可能还需要一个不那么激烈的数据库升级路由,而不是简单地删除所有表并再次重新创建它们.
| 归档时间: |
|
| 查看次数: |
470 次 |
| 最近记录: |