ormlite-android-5.1增刪改查

0
回復
1961
查看
打印 上一主題 下一主題
[復制鏈接]

32

主題

40

帖子

1525

安幣

Android大神

Rank: 6Rank: 6

樓主
發表于 2019-12-19 14:37:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關于ormlite增刪改查操作,在這里以一個查詢歷史記錄和根據歷史記錄或當前記錄查詢相關信息進行講解
增刪改查有很多方法,在這我還是先把工具類代碼粘上,就不作多的解釋啦
public class DataBasehelper extends OrmLiteSqliteOpenHelper {
    private static DataBasehelper db;
    public DataBasehelper(Context context) {
        super(context, "fwsssssss", null, 8);
    }
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
        try {
            TableUtils.createTable(connectionSource , Om_Em.class);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) {
        try {
            TableUtils.dropTable(connectionSource , Om_Em.class , true);
                onCreate(sqLiteDatabase , connectionSource);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    public static synchronized DataBasehelper getInstance(Context context){
        if(db == null){
            db = new DataBasehelper(context);
        }
        return db;
    }
}
然后就是實體類
@DatabaseTable(tableName = "Luck")
public class Om_Em {
    @DatabaseField(generatedId = true)
    int id;
    @DatabaseField
    String name;
    @DatabaseField
    int count;
    @DatabaseField
    int scort;
    @DatabaseField
    int money;
    public Om_Em(String name, int count, int scort, int money) {
        this.name = name;
        this.count = count;
        this.scort = scort;
        this.money = money;
    }
    public Om_Em() {
    }
    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 getCount() {
        return count;
    }
    public void setCount(int count) {
        this.count = count;
    }
    public int getScort() {
        return scort;
    }
    public void setScort(int scort) {
        this.scort = scort;
    }
    public int getMoney() {
        return money;
    }
    public void setMoney(int money) {
        this.money = money;
    }
}
然后就是Dao模式了
public class Om_Daos {
    Context context;
    public Om_Daos(Context context) {
        this.context = context;
    }
    public DataBasehelper getHelper(){
        return DataBasehelper.getInstance(context);
    }
    public Dao<Om_Em , Integer> getDao() throws SQLException {
            return getHelper().getDao(Om_Em.class);
    }
    public Dao.CreateOrUpdateStatus Update(Om_Em om_em) throws SQLException {
        return  getDao().createOrUpdate(om_em);
    }
}
布局XML代碼如下
<include
    android:id="@+id/list_tab_toolbar"
    layout="@layout/toolbar_main"/>
<TextView
    android:id="@+id/textView5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginStart="196dp"
    android:layout_marginLeft="196dp"
    android:layout_marginTop="139dp"
    android:text="車輛違章居民身份信息查詢"
    android:textColor="#000"
    android:textSize="30dp" />
<TextView
    android:id="@+id/textView6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginStart="228dp"
    android:layout_marginLeft="228dp"
    android:layout_marginTop="222dp"
    android:text="車牌號"
    android:textSize="20dp" />
<EditText
    android:id="@+id/sm_4_edit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginStart="326dp"
    android:layout_marginLeft="326dp"
    android:layout_marginTop="212dp"
    android:digits="ABCDabcd0123456789"
    android:ems="10"
    android:inputType="text" />
<Button
    android:id="@+id/sm_4_seach"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_marginTop="209dp"
    android:layout_marginEnd="286dp"
    android:layout_marginRight="286dp"
    android:text="查詢" />
這里是編輯框的判斷邏輯,很簡單,就不多說了
public class Smart4 extends BaseActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        InitView();
    }
    private void InitView() {
        initToolBar(findViewById(R.id.toolbar), true, getString(R.string.item1));
        daos = new Om_Daos(getApplicationContext());
        requestQueue = Volley.newRequestQueue(getApplicationContext());
        sm_4_seach = findViewById(R.id.sm_4_seach);
        sm_4_edit = findViewById(R.id.sm_4_edit);
          function(){ //外匯返傭 http://www.fx61.com/
        sm_4_seach.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String s = sm_4_edit.getText().toString().trim();
                if("".equals(s)){
                    Toast.makeText(Smart4.this, "不能為空!", Toast.LENGTH_SHORT).show();
                }else{
                    InitData(s);
                }
            }
        });
    }
}
private void InitData(String carnumber){
                   
                            ....
      
        JsonObjectRequest jor = new JsonObjectRequest(url, job, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject jsonObject) {
                Toast.makeText(Smart4.this, "查詢成功!", Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(Smart4.this, Smart4_watch.class);
                intent.putExtra("carnumber",job.optString("carnumber"));
                startActivity(intent);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                Toast.makeText(Smart4.this, "未查詢到"+job.optString("carnumber")+"信息", Toast.LENGTH_SHORT).show();
            }
        });
        requestQueue.add(jor);
    }
首先我需要定義一個棋子
private boolean isInsert = true;
其次,執行數據庫的查詢操作
使用queryForAll()方法查詢list集合
    String s = getIntent().getStringExtra("carnumber");
        Om_Daos = new Om_Daos(getApplicationContext());
        om_ems = Om_Daos.getDao().queryForAll();//查詢操作
      
查詢返回的是一個list集合,然后遍歷集合中的元素,并且尋找是否重復查找數據
  if(om_ems.size() != 0){
            for (int i = 0; i < om_ems.size(); i++) {
                if(om_ems.get(i).getName().equals(s)){
                    isInsert = false;
                    break;
                }
            }
        }else{
        //執行插入語句,因為后面用到更新,所以在這里我先給這條數據其他成員都設為0
            Om_Daos.getDao().create(new Om_Em(s,0,0,0));
            isInsert = false;
        }
使用create()方法插入一個實體類
if(isInsert){
            Om_Daos.getDao().create(new Om_Em(s,0,0,0));
        }
       //重新查詢list集合
        om_ems = Om_Daos.getDao().queryForAll();
注意,在執行插入語句之后,記得重新查詢一次list ,然后這里省略根據JSON數據查詢的實體類信息,因為是側重點,所以就不提起了,之后,自定義左右兩個適配器,用來展示不重復的歷史記錄信息
class MyLeftAdapter extends BaseAdapter{
        @Override
        public int getCount() {
            return om_ems.size();
        }
        @Override
        public Object getItem(int i) {
            return null;
        }
        @Override
        public long getItemId(int i) {
            return 0;
        }
        @Override
        public View getView(int position, View context, ViewGroup viewGroup) {
            if(context == null){
                context = getLayoutInflater().inflate(R.layout.sm_4_left , null);
            }
            return context;
        }
    }
   
class MyRightAdapter extends BaseAdapter{
        @Override
        public int getCount() {
            return right_adapter.getROWS_DETAIL().size();
        }
        @Override
        public Object getItem(int i) {
            return null;
        }
        @Override
        public long getItemId(int i) {
            return 0;
        }
        @Override
        public View getView(int position, View context, ViewGroup viewGroup) {
            if(context == null){
                context = getLayoutInflater().inflate(R.layout.sm_4_right , null);
            }
            return context;
        }
    }
給兩個適配器設置監聽事件
sm_4_right.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                       
            }
        });
        sm_4_left.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
               
            }
        });
右邊的適配器點擊進入另外一個界面,查看詳情,實現查看放大縮小的功能,這里只展示手勢的核心代碼
public class Smart4_Guet extends android.support.v7.widget.AppCompatImageView implements ScaleGestureDetector.OnScaleGestureListener {
    private ScaleGestureDetector scaleGestureDetector;
    private Matrix matrix;
    boolean first = true;
    public Smart4_Guet(Context context) {
        super(context);
        initView(context);
    }
    public Smart4_Guet(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        initView(context);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        if (first){
            first = false;
            matrix.reset();
            matrix.postTranslate(getWidth()/2,getHeight()/2);
            setImageMatrix(matrix);
        }
    }
    private void initView(Context context) {
        setScaleType(ScaleType.MATRIX);
         scaleGestureDetector = new ScaleGestureDetector(context,this);
         matrix = new Matrix();
        setOnTouchListener(new OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                scaleGestureDetector.onTouchEvent(event);
                return true;
            }
        });
    }
    @Override
    public boolean onScale(ScaleGestureDetector detector) {
        float scaleFactor = detector.getScaleFactor();
        matrix.postScale(scaleFactor,scaleFactor,getWidth()/2,getHeight()/2);
        setImageMatrix(matrix);
        return true;
    }
現在重點來說查找的功能和更新的功能
try {
                    //動態查找id
                    int id = 0 , money = 0;
                    //查詢list集合
                    List<Om_Em> om_emsS = Om_Daos.getDao().queryForAll();
                    //這里查找ID的條件我就以名字為例name 是 輸入框中傳來的
                    for (int i = 0; i < om_emsS.size(); i++) {
                        if(om_emsS.get(i).getName().equals(name)){
                            id = om_emsS.get(i).getId();                        
                            break;
                        }
                    }
使用queryForId()方法,根據ID查詢實體類
        Om_Em om_em = Om_Daos.getDao().queryForId(id);
//向實體類設置一些屬性
                        ....
                                //執行更新方法
         om_em.setCount(11);
                            Om_Daos.Update(om_em);
                            //重新查詢list 然后設置給適配器
                            om_ems = Om_Daos.getDao().queryForAll();

分享到:  QQ好友和群 QQ空間 微信
收藏
收藏0
支持
支持0
反對
反對0
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

領先的中文移動開發者社區
18620764416
7*24全天服務
意見反饋:[email protected]

掃一掃關注我們

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粵ICP備15117877號 )

阿拉斯加垂钓APP下载
山东十一选五遗漏彩乐乐 世界足球国家队排名 哈尔滨麻将破解版 天天贵阳麻将下载安 重庆最新幸运农场开奖 持枪王者 3D试机号分析 股票融资融券操作方法 吉祥麻将怎么弄房卡 论坛股票 天易棋牌游戏? 微乐吉林麻将下载 中国福利彩票七乐彩 浙江十一选五走势一 今日福建体彩22选5开奖结果 八闽福州麻将官方版