Android 数据库操作封装,让开发更高效! (android 封装数据库操作)
在 Android 开发中,数据库操作是必不可少的一部分。程序员需要使用数据库存储数据,然后在需要的时候从数据库中取出数据来使用。这个过程可能会涉及到多个表的查询,插入数据和更新数据等操作。为了提高开发效率和代码可读性,我们可以使用封装好的数据库操作类来进行开发。
封装的好处
封装数据库操作的好处在于,我们可以在一个类中封装所有的数据库操作方法,这样可以减少代码冗余,提高代码可读性。另外,封装的类中可以定义一些通用的方法,比如数据表的创建、插入数据和更新数据等等。这样可以减少我们在开发中的重复代码,提高开发效率。
具体实现
封装数据库操作需要先定义一个 DBHelper 类,这个类用来处理所有的数据库操作。然后,在我们的 DAO 层中,我们可以通过调用这个 DBHelper 类中的方法来完成对数据库的操作。下面就来看一下具体实现的方法。
1. 定义 DBHelper 类
定义 DBHelper 类,这个类主要是实现了数据库的创建和升级功能。在我们的 DBHelper 类中,我们需要定义一个 Context 对象和一个 SQLiteDatabase 对象。
“`java
public class DBHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = “mydb.db”;
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
createTableOne(db);
createTableTwo(db);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(“DROP TABLE IF EXISTS ” + TableOne.TABLE_NAME);
db.execSQL(“DROP TABLE IF EXISTS ” + TableTwo.TABLE_NAME);
onCreate(db);
}
private void createTableOne(SQLiteDatabase db) {
db.execSQL(TableOne.CREATE);
}
private void createTableTwo(SQLiteDatabase db) {
db.execSQL(TableTwo.CREATE);
}
}
“`
2. 定义数据表
定义数据表的时候,我们需要创建一个新的类,命名为 TableOne,然后在这个类中定义数据表的名称和列的名称。
“`java
public class TableOne {
public static final String TABLE_NAME = “table_one”;
public static final String ID = “id”;
public static final String NAME = “name”;
public static final String AGE = “age”;
public static final String CREATE =
“CREATE TABLE ” + TABLE_NAME + “(“
+ ID + ” INTEGER PRIMARY KEY,”
+ NAME + ” TEXT,”
+ AGE + ” INTEGER” + “)”;
}
“`
3. 实现查询、插入、删除和更新方法
接下来,我们需要在 DBHelper 类中封装一些常用的方法。这些方法包括查询、插入、删除和更新等等。
“`java
public class DBHelper extends SQLiteOpenHelper {
…
public Cursor query(String tableName, String[] columns, String selection, String[] selectionArgs, String orderBy) {
SQLiteDatabase db = this.getWritableDatabase();
return db.query(tableName, columns, selection, selectionArgs, null, null, orderBy);
}
public long insert(String tableName, ContentValues values) {
SQLiteDatabase db = this.getWritableDatabase();
return db.insert(tableName, null, values);
}
public int delete(String tableName, String selection, String[] selectionArgs) {
SQLiteDatabase db = this.getWritableDatabase();
return db.delete(tableName, selection, selectionArgs);
}
public int update(String tableName, ContentValues values, String selection, String[] selectionArgs) {
SQLiteDatabase db = this.getWritableDatabase();
return db.update(tableName, values, selection, selectionArgs);
}
}
“`
4. 调用 DBHelper 类中的方法
在我们的 DAO 类中,我们需要定义一个 DBHelper 类型的对象,然后通过这个对象来调用封装好的方法。下面是一个简单的使用示例。
“`java
public class UserDaoImpl {
private DBHelper dbHelper;
public UserDaoImpl(Context context) {
dbHelper = new DBHelper(context);
}
public void addUser(User user) {
ContentValues values = new ContentValues();
values.put(TableOne.NAME, user.getName());
values.put(TableOne.AGE, user.getAge());
dbHelper.insert(TableOne.TABLE_NAME, values);
}
public List getUsers() {
List userList = new ArrayList();
Cursor cursor = dbHelper.query(TableOne.TABLE_NAME, null, null, null, null);
if (cursor.moveToFirst()) {
do {
User user = new User();
user.setId(cursor.getInt(cursor.getColumnIndex(TableOne.ID)));
user.setName(cursor.getString(cursor.getColumnIndex(TableOne.NAME)));
user.setAge(cursor.getInt(cursor.getColumnIndex(TableOne.AGE)));
userList.add(user);
} while (cursor.moveToNext());
}
cursor.close();
return userList;
}
}
“`