public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "my_database.db";
private static final int DATABASE_VERSION = 1;
private static DatabaseHelper instance;
private DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public static synchronized DatabaseHelper getInstance(Context context) {
if (instance == null) {
instance = new DatabaseHelper(context.getApplicationContext());
}
return instance;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)");
db.execSQL("CREATE INDEX IF NOT EXISTS idx_users_name ON users (name)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
@Override
public void onConfigure(SQLiteDatabase db) {
super.onConfigure(db);
db.execSQL("PRAGMA journal_mode=WAL");
}
}
public class UserRepository {
private DatabaseHelper dbHelper;
public UserRepository(Context context) {
dbHelper = DatabaseHelper.getInstance(context);
}
public void insertUsers(List<User> users) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
try {
db.beginTransaction();
for (User user : users) {
ContentValues values = new ContentValues();
values.put("name", user.getName());
db.insert("users", null, values);
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
}
public class UserRepository {
// ...
public List<User> getUsersByName(String name) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("users", null, "name=?", new String[]{name}, null, null, null);
List<User> users = new ArrayList<>();
if (cursor != null && cursor.moveToFirst()) {
do {
int id = cursor.getInt(cursor.getColumnIndex("id"));
String userName = cursor.getString(cursor.getColumnIndex("name"));
users.add(new User(id, userName));
} while (cursor.moveToNext());
cursor.close();
}
return users;
}
}
public class UserRepository {
// ...
public List<User> getAllUsers() {
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("users", new String[]{"id", "name"}, null, null, null, null, null);
List<User> users = new ArrayList<>();
if (cursor != null && cursor.moveToFirst()) {
do {
int id = cursor.getInt(cursor.getColumnIndex("id"));
String userName = cursor.getString(cursor.getColumnIndex("name"));
users.add(new User(id, userName));
} while (cursor.moveToNext());
cursor.close();
}
return users;
}
}
@Table(name = "users")
public class User extends BaseOrmLiteEntity {
@DatabaseField(columnName = "id", id = true)
private int id;
@DatabaseField(columnName = "name")
private String name;
// ...
public User() {
}
public User(int id, String name) {
this.id = id;
this.name = name;
}
// getter and setter methods
}