Android Realm相关操作
生活随笔
收集整理的這篇文章主要介紹了
Android Realm相关操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
寫了2天的代碼,總結一下這兩天的一些積累
realm簡單來說就是一個可以代替sql的數據庫, 特點:易用,快速,跨平臺,專業(支持加密,格式化查詢,易于移植,支持JSON,流式api,數據變更通知), 可視化
官方網站 https://realm.io/docs/java/latest/ 有需要的朋友,可以去看看
代碼:
1、配置
在最外面的那層build.gradle 配置這一段代碼
然后在app文件里面的build.gradle 配置這一段代碼
apply plugin: 'realm-android'1、布局
3、代碼
3.1創建一個需要保存數據庫的類,我寫了兩個
3.2 創建一個Application,在onCreate里面進行初始化
import io.realm.Realm; import io.realm.RealmConfiguration; /*** @author Admin*/ public class MyApplication extends Application {public static RealmConfiguration config;@Overridepublic void onCreate() {super.onCreate();Realm.init(this);config = new RealmConfiguration.Builder().name("myRealm.realm").deleteRealmIfMigrationNeeded().build();Realm.setDefaultConfiguration(config);//配置默認的數據庫//setDefaultConfiguration(new RealmConfiguration.Builder().build()); // RealmConfiguration configuration = new RealmConfiguration.Builder().build();} }3.3 主界面的實現代碼
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.TextView; import android.widget.Toast;import io.realm.Realm; import io.realm.RealmAsyncTask; import io.realm.RealmResults;/*** @author Admin*/ public class MainActivity extends AppCompatActivity implements View.OnClickListener {TextView txtShow;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initRealm();txtShow = findViewById(R.id.txt_show);findViewById(R.id.btn_add).setOnClickListener(this);findViewById(R.id.btn_search).setOnClickListener(this);findViewById(R.id.btn_delete).setOnClickListener(this);findViewById(R.id.btn_update).setOnClickListener(this);}Realm realm;Integer index = 0;RealmAsyncTask transaction;private void initRealm() {realm = Realm.getInstance(MyApplication.config);}/*** 升級數據庫*/ // class CustomMigration implements RealmMigration { // @Override // public void migrate(DynamicRealm realm, long oldVersion, long newVersion) { // RealmSchema schema = realm.getSchema(); // Log.e("MainActivity", "oldVersion:" + oldVersion + "----newVersion" + newVersion); // if (oldVersion == 1 && newVersion == 2) { // RealmObjectSchema personSchema = schema.get("Dog"); // if (!personSchema.hasField("Dog")) { personSchema.addField("aihao", String.class, FieldAttribute.REQUIRED); oldVersion++; } // // } // } // }private void addRealm() {transaction = realm.executeTransactionAsync(realm -> {MyRealmDemo myDemo = realm.createObject(MyRealmDemo.class);myDemo.setUserName("名字");myDemo.setPwd(index + "");myDemo.getRemarks().add(index);index++;}, () -> {//成功回調Log.e("MainActivity", "成功回調" + index);}, error -> {//失敗回調Log.e("MainActivity", "失敗");});transaction = realm.executeTransactionAsync(realm -> {Dog dog = realm.createObject(Dog.class);dog.setName("哈士奇");dog.setAge(index + "歲");dog.setAihao("拆家" + index);}, () -> {//成功回調Log.e("MainActivity", "成功回調" + index);}, error -> {//失敗回調Log.e("MainActivity", "失敗");});}private void updateRealm() {transaction = realm.executeTransactionAsync(realm -> {RealmResults<MyRealmDemo> myList = realm.where(MyRealmDemo.class).findAll();if (myList != null && myList.size() > 0) {MyRealmDemo myDemo = myList.get(0);myDemo.setUserName("換名字");myDemo.setPwd("小球不得");myDemo.getRemarks().add(index);index++;} else {Log.e("MainActivity", "updateRealm沒得東西,改毛線" + index);Toast.makeText(this, "updateRealm沒得東西,改毛線", Toast.LENGTH_SHORT).show();}}, () -> {//成功回調Log.e("MainActivity", "成功回調" + index);}, error -> {//失敗回調error.printStackTrace();Log.e("MainActivity", "失敗" + error.getMessage());});}private void deleteRealm() {transaction = realm.executeTransactionAsync(realm -> {RealmResults<MyRealmDemo> myList = realm.where(MyRealmDemo.class).findAll();//刪除第一個數據myList.get(0).deleteFromRealm(); // myList.deleteFirstFromRealm(); // //刪除最后一個數據 // myList.deleteLastFromRealm(); // //刪除位置為1的數據 // myList.deleteFromRealm(1); // //刪除所有數據 // myList.deleteAllFromRealm();}, () -> {//成功回調Log.e("MainActivity", "deleteRealm刪球了" + index);}, error -> {//失敗回調Log.e("MainActivity", "deleteRealm沒刪拖");});}private void searchRealm() {RealmResults<MyRealmDemo> myList = realm.where(MyRealmDemo.class).findAll();String strText = "";if (myList != null && myList.size() > 0) {for (MyRealmDemo myRealmDemo : myList) {strText += "\n看什么玩意嘛:" + myRealmDemo.toString();Log.e("MainActivity", "看什么玩意嘛:" + myRealmDemo.toString());for (int intNum : myRealmDemo.getRemarks()) {strText += "\n數組里的東西:" + intNum;Log.e("MainActivity", "數組里的東西:" + intNum);}}} else {Log.e("MainActivity", "空的,代碼錯了,看錘子");}RealmResults<Dog> dogList = realm.where(Dog.class).findAll();for (Dog dog : dogList) {strText += "\n我的狗:" + dog.toString();Log.e("MainActivity", "我的狗:" + dog.toString());}txtShow.setText(strText);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_add://添加addRealm();break;case R.id.btn_search://查詢searchRealm();break;case R.id.btn_delete://刪除deleteRealm();break;case R.id.btn_update://修改updateRealm();break;default:break;}}@Overrideprotected void onStop() {super.onStop();//取消當前的數據庫操作狀態if (transaction != null && !transaction.isCancelled()) {transaction.cancel();}}@Overrideprotected void onDestroy() {super.onDestroy();//關閉連接realm.close();} }效果圖:
源碼:
https://github.com/StrangerYang/testRealm
總結
以上是生活随笔為你收集整理的Android Realm相关操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 调用startActivityForRe
- 下一篇: 项目问题滴总结