SP
public void saveToSP(View view) {
SharedPreferences sp = getSharedPreferences("SPName", Context.MODE_PRIVATE);
sp.edit().putString("name", "Tony").apply();
}
public void getSpData(View view) {
SharedPreferences sp = getSharedPreferences("SPName", Context.MODE_PRIVATE);
String value = sp.getString("name", "deffault");
Toast.makeText(this, "" + value, Toast.LENGTH_SHORT).show();
}
SQLite
创建工具类
public class MySqliteOpenHelper extends SQLiteOpenHelper {
private static SQLiteOpenHelper mInstance;
public static synchronized SQLiteOpenHelper getInstance(Context context) {
if (mInstance == null) {
mInstance = new MySqliteOpenHelper(context, "myDB.db", null, 1);
}
return mInstance;
}
private MySqliteOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table persons(_id integer primary key autoincrement, name text)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
生成db
SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
SQLiteDatabase readableDatabase = helper.getReadableDatabase();
查询
SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
SQLiteDatabase db = helper.getReadableDatabase();
if (db.isOpen()) {
Cursor cursor = db.rawQuery("select * from persons", null);
while(cursor.moveToNext()) {
int _id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
Log.d("mytest", "query: _id:" + _id + " name:" + name);
}
cursor.close();
db.close();
}
插入
SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
SQLiteDatabase db = helper.getWritableDatabase();
if (db.isOpen()) {
String sql = "insert into persons(name) values('meme')";
db.execSQL(sql);
db.close();
}
修改
SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
SQLiteDatabase db = helper.getWritableDatabase();
if (db.isOpen()) {
String sql = "update persons set name =? where _id =?";
db.execSQL(sql, new Object[]{"you", 5});
db.close();
}
删除
SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
SQLiteDatabase db = helper.getWritableDatabase();
if (db.isOpen()) {
String sql = "delete from persons where _id =?";
db.execSQL(sql, new Object[]{4});
db.close();
}
Room
导包
def room_version = "2.2.0-alpha01"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
创建
- 必须先创建一个需要映射的实体类,用@Entity进行注解
@Entity
public class Student {
@PrimaryKey(autoGenerate = true)
private int id;
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
- 创建一个操作实体类的dao接口,用@Dao进行注解
@Dao
public interface StudentDao {
@Insert
void insertStudents(Student ... students);
@Update
void updateStudents(Student... students);
@Delete
void deleteStudents(Student... students);
@Query("DELETE FROM Student")
void deleteAllStudents();
@Query("SELECT * FROM Student ORDER BY ID DESC")
List<Student> getAllStudent();
@Query("SELECT * FROM Student WHERE name = :name")
Anime getStudentByName(String name);
}
- 创建一个抽象类,添加@Database注解
@Database(entities = {Student.class}, version = 1, exportSchema = false)
public abstract class StudentDatabase extends RoomDatabase {
public abstract StudentDao getStudentDao();
private static StudentDatabase INSTANCE;
public static synchronized StudentDatabase getInstance(Context context) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder
(context.getApplicationContext(), StudentDatabase.class, "student_database")
.build();
}
return INSTANCE;
}
}
- 创建一个管理类
public class DBEngine {
private StudentDao studentDao;
public DBEngine(Context context) {
StudentDatabase studentDatabase = StudentDatabase.getInstance(context);
studentDao = studentDatabase.getStudentDao();
}
public void insertStudents(Student... students) {
new InsertAsyncTask(studentDao).execute(students);
}
public void updateStudents(Student... students) {
new UpdateAsyncTask(studentDao).execute(students);
}
public void deleteStudents(Student... students) {
new DeleteAsyncTask(studentDao).execute(students);
}
public void deleteAllStudents() {
new DeleteAllAsyncTask(studentDao).execute();
}
public void queryAllStudents() {
new QueryAllAsyncTask(studentDao).execute();
}
static class InsertAsyncTask extends AsyncTask<Student, Void, Void> {
private StudentDao dao;
public InsertAsyncTask(StudentDao studentDao) {
dao = studentDao;
}
@Override
protected Void doInBackground(Student... students) {
dao.insertStudents(students);
return null;
}
}
static class UpdateAsyncTask extends AsyncTask<Student, Void, Void> {
private StudentDao dao;
public UpdateAsyncTask(StudentDao studentDao) {
dao = studentDao;
}
@Override
protected Void doInBackground(Student... students) {
dao.updateStudents(students);
return null;
}
}
static class DeleteAsyncTask extends AsyncTask<Student, Void, Void> {
private StudentDao dao;
public DeleteAsyncTask(StudentDao studentDao) {
dao = studentDao;
}
@Override
protected Void doInBackground(Student... students) {
dao.deleteStudents(students);
return null;
}
}
static class DeleteAllAsyncTask extends AsyncTask<Void, Void, Void> {
private StudentDao dao;
public DeleteAllAsyncTask(StudentDao studentDao) {
dao = studentDao;
}
@Override
protected Void doInBackground(Void... voids) {
dao.deleteAllStudents();
return null;
}
}
private static class QueryAllAsyncTask extends AsyncTask<Void, Void, Void> {
private StudentDao dao;
public QueryAllAsyncTask(StudentDao studentDao) {
dao = studentDao;
}
@Override
protected Void doInBackground(Void... voids) {
List<Student> allStudent = dao.getAllStudent();
for (Student student : allStudent) {
Log.e("Derry", "doInBackground: 全部 查询 每一项:" + student.toString() );
}
return null;
}
}
}
增删改查
private DBEngine dbEngine;
dbEngine = new DBEngine(this);
public void insertAction(View view) {
Student student1 = new Student("张三", 20);
Student student2 = new Student("李四", 23);
Student student3 = new Student("王五", 27);
dbEngine.insertStudents(student1, student2, student3);
}
public void updateAction(View view) {
Student student = new Student("李元霸", 40);
student.setId(3);
dbEngine.updateStudents(student);
}
public void deleteAction(View view) {
Student student = new Student(null, 0);
student.setId(3);
dbEngine.deleteStudents(student);
}
public void queryAction(View view) {
dbEngine.queryAllStudents();
}
public void deleteAllAction(View view) {
dbEngine.deleteAllStudents();
}