Android之ORMLite實現資料持久化的簡單使用

來源:互聯網
上載者:User

標籤:

  Android中內建了sqlite,但是常用的開發語言java是物件導向的,而資料庫是關係型的,二者之間的轉化每次都很麻煩。(作為程式員,應該學會偷懶)而Java Web開發中有很多orm架構(其實我沒學過java web),但是想直接放到Android上用有些麻煩。嘗試了一下找Android的orm架構,於是便發現了ORMLite。

  首先到官方網站瞭解一下ormlite:http://ormlite.com/。

  然後下載兩個jar包,一個是ormlite-core-4.48.jar,另一個是ormlite-android-4.48.jar。(當然,也可以下載對應文檔)為:http://ormlite.com/releases/。

  

 

  接著做一個簡單的操作實現吧(實現對資料庫的創表以及增刪查改)。

  建立一個工程名為“zhj_ORMLite”,包名為“com.topcsa.zhj_ormlite”,選擇SDK版本為14,將ormlite-core-4.48.jar和ormlite-android-4.48.jar添加帶項目當中。

  

  建立一個實體類Person,這個類就是需要建立的表。

  代碼中的@DatabaseTable 指定類對應的表明,@DatabaseField 對應的欄位名

package com.topcsa.zhj_ormlite;import com.j256.ormlite.field.DatabaseField;import com.j256.ormlite.table.DatabaseTable;@DatabaseTable(tableName = "tb_Person")public class Person {    public Person() {    }    public Person(String name, int age) {        super();        this.name = name;        this.age = age;    }    @DatabaseField(generatedId = true)//generatedId 表示id為主鍵且自動產生    private int id;    @DatabaseField(columnName = "name")    private String name;    @DatabaseField(columnName = "age")    private int 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;    }}

  

     建立一個database helper類,繼承OrmLiteSqliteOpenHelper 實現 onCreate 和 onUpgrade ,這個類類似於 android 的SQLiteOpenHelper方法 ,大家應該知道這個類的作用了,建立刪除資料庫應該使用TableUtils工具類的方法。

  建立表,我們直接使用ormlite提供的TableUtils.createTable(connectionSource, Person.class);進行建立。

  更新表,使用ormlite提供的TableUtils.dropTable(connectionSource, Person.class, true);進行刪除操作。

  

package com.topcsa.zhj_ormlite;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.util.Log;import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;import com.j256.ormlite.dao.Dao;import com.j256.ormlite.support.ConnectionSource;import com.j256.ormlite.table.TableUtils;public class DBhelper extends OrmLiteSqliteOpenHelper {    private static final String TABLE_NAME = "ormlite.db";    private static DBhelper instance;    public DBhelper(Context context) {        super(context, TABLE_NAME, null, 1);        // TODO Auto-generated constructor stub    }    /**     * 單例擷取該Helper     *      * @param context     * @return     */    public static synchronized DBhelper getHelper(Context context) {        if (instance == null) {            synchronized (DBhelper.class) {                if (instance == null)                    instance = new DBhelper(context);            }        }        return instance;    }    @Override    public void onCreate(SQLiteDatabase database,            ConnectionSource connectionSource) {        try {            TableUtils.createTable(connectionSource, Person.class);            Log.d("DBhelper", "建立表成功");        } catch (java.sql.SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    @Override    public void onUpgrade(SQLiteDatabase database,            ConnectionSource connectionSource, int oldVersion, int newVersion) {        try {            TableUtils.dropTable(connectionSource, Person.class, true);        } catch (java.sql.SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        onCreate(database, connectionSource);    }}

 

  建立DAO類,建立PersonDao.java。

  

package com.topcsa.zhj_ormlite;import java.sql.SQLException;import java.util.List;import android.content.Context;import android.util.Log;import com.j256.ormlite.dao.Dao;public class PersonDao {    Context con;    private DBhelper helper;    private Dao<Person, Integer> personDao;    // 建構函式    public PersonDao(Context con) {        helper = DBhelper.getHelper(con);        this.con = con;    }    // 每個表一般我們都會單獨寫個Dao用於操作    public Dao<Person, Integer> getPersonDao() throws java.sql.SQLException {        if (personDao == null) {            personDao = helper.getDao(Person.class);        }        return personDao;    }    // 根據ID查詢    public Person selectPerson(int i) {        try {            Person p = getPersonDao().queryForId(i);            Log.d("TAG", "查詢ID為" + i + "的人為:" + p.getName());            return p;        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return null;    }    // 添加某人    public void addPerson(Person p) {        try {            getPersonDao().create(p);            Log.d("TAG", "添加:" + p.getName());        } catch (SQLException e) {        }    }    // 刪除某人    public void deletePerson(Person p) {        try {            Log.d("TAG", "刪除ID為" + p.getId() + "的人:" + p.getName());            getPersonDao().deleteById(p.getId());        } catch (SQLException e) {        }    }    // 更新某人    public void updatePerson(Person p, String name) {        try {            Log.d("TAG", "修改資料前姓名為:" + p.getName());            p.setName(name);            getPersonDao().update(p);            Log.d("TAG", "修改資料后姓名為:" + p.getName());        } catch (SQLException e) {        }    }    // 查詢所有人    public List<Person> showPersonAll() {        try {            List<Person> list = getPersonDao().queryForAll();            Log.d("TAG", "查詢所有資料條數:" + list.size());            for (int i = 0; i < list.size(); i++) {                Log.d("TAG", "單條資料姓名:" + list.get(i).getName());            }            return list;        } catch (SQLException e) {        }        return null;    }}

  

  最後,在Activity中具體實現:

package com.topcsa.zhj_ormlite;import android.app.Activity;import android.os.Bundle;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Person p = new Person("趙江", 21);        PersonDao pdao = new PersonDao(this);        try {            pdao.addPerson(p);            p = new Person("黃秋", 21);            pdao.addPerson(p);            p = new Person("何權利", 21);            pdao.addPerson(p);            p = new Person("任貴權", 21);            pdao.addPerson(p);            p = new Person("塗俊", 21);            pdao.addPerson(p);            pdao.showPersonAll();            System.out                    .println("-------------------------------天王蓋地虎------------------------------");            Person p1 = pdao.selectPerson(2);            pdao.updatePerson(p1, "~~~~蘇蘇~~~~");            p = pdao.selectPerson(1);            pdao.deletePerson(p);            pdao.showPersonAll();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}

 

運行結果如下:

 

Android之ORMLite實現資料持久化的簡單使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.