OrmLite__數據庫框架

導包

http://ormlite.com/releases/
將core和android的jar各自下載一份並導入
//或者
compile 'com.j256.ormlite:ormlite-android:5.0'

創建實例化bean類

//表名
@DatabaseTable(tableName = "People")
public class People {
    /*
    * columnName  字段名
    * dataType 數據類型
    * defaultValue 字符串默認值
    * canBeNull 可否爲空
    * id 主鍵
    * generatedId 自增主鍵
    * foreign 外聯
    * unique 唯一
    * */
    //自增主鍵
    @DatabaseField(generatedId = true)
    private int id;
    //列名
    @DatabaseField(columnName = "name")
    private String name;
    /*
    * 常用類型:
    * DataType.STRING
    * DataType.BOOLEAN
    * DataType.DATE
    * DataType.DATE_LONG
    * DataType.CHAR
    * DataType.BYTE
    * DataType.SHORT
    * DataType.INTEGER
    * DataType.LONG
    * DataType.FLOAT
    * DataType.DOUBLE
    * DataType.SERIALIZABLE
    * DataType.TIME_STAMP
    * */
    //列名和類型
    @DatabaseField(columnName = "age",dataType = DataType.INTEGER)
    private int age;

    //必須存在無參構造器
    public People() {
    }

    @Override
    public String toString() {
        return "People{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", 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;
    }
}

創建helper類,用於獲取Dao對象

public class PeopeoDatabaseHelper extends OrmLiteSqliteOpenHelper {
    public static final String DB_NAME="people.db";
    public static final int DB_VERSION=1;

    //出現異常直接拋出
    RuntimeExceptionDao<People, Integer> mRuntimeExceptionDao;
    //出現異常進行cache
    Dao<People, Integer> mDao;

    public PeopeoDatabaseHelper(Context context) {
        //在工廠類中傳入null即可
        super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
        try {
            TableUtils.createTable(connectionSource,People.class);
        } catch (SQLException e) {
            throw new RuntimeException("建表"+DB_NAME+"失敗");
        }
        RuntimeExceptionDao<People, Integer> dao = getPeopleRuntimeDao();
        //在創建數據庫時插入一些數據用於測試
        People people = new People();
        people.setAge(23);
        people.setName("小黃");
        dao.create(people);
        People people2 = new People();
        people.setAge(24);
        people.setName("老江");
        dao.create(people2);
    }

    @Override
    public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
        try {
            TableUtils.dropTable(connectionSource,People.class,true);
            onCreate(database,connectionSource);
        } catch (SQLException e) {
            throw new RuntimeException("升級"+DB_NAME+"失敗");
        }
    }

    //獲取dao的兩個方法
    public RuntimeExceptionDao<People,Integer> getPeopleRuntimeDao() {
        if (mRuntimeExceptionDao ==null){
            mRuntimeExceptionDao =getRuntimeExceptionDao(People.class);
        }
        return mRuntimeExceptionDao;
    }
    public Dao<People, Integer> getPeopleDao() throws SQLException {
        if (mDao==null){
            mDao=getDao(People.class);
        }
        return mDao;
    }

    //關閉數據庫
    @Override
    public void close() {
        super.close();
        mDao=null;
        mRuntimeExceptionDao=null;
    }
}

增刪改查

public class MainActivity extends AppCompatActivity {
    RuntimeExceptionDao<People, Integer> dao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        PeopeoDatabaseHelper peopeoDatabaseHelper = new PeopeoDatabaseHelper(this);
        peopeoDatabaseHelper = OpenHelperManager.getHelper(this, PeopeoDatabaseHelper.class);
        dao = peopeoDatabaseHelper.getPeopleRuntimeDao();
    }

    int x = 0;

    public void insert(View view) {
        People people = new People();
        people.setName("小黃" + x + "號");
        people.setAge(x);
        dao.create(people);
        x++;
    }

    public void delete(View view) {
        try {
            int delete = dao.deleteBuilder().delete();
            Log.d("meee", getClass() + ":\n" + "delete:" + delete);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void update(View view) {
        try {
            List<People> query = dao.queryBuilder()
                    .where()
                    .eq("name", "小黃1號")
                    .and()
                    .eq("age", 1)
                    .query();
            for (int i = 0; i < query.size(); i++) {
                People people = query.get(i);
                people.setName("巨無霸小黃一號");
                dao.update(people);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void query(View view) {
        List<People> peoples = dao.queryForAll();
        for (int i = 0; i < peoples.size(); i++) {
            People people = peoples.get(i);
            Log.d("meee", getClass() + ":\n" + "people:" + people);
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章