Android開發之ORMLite數據庫的基本使用

第一步 首先導入依賴

implementation 'com.j256.ormlite:ormlite-android:5.1'
implementation 'com.j256.ormlite:ormlite-core:5.1'

第二步 創建數據庫及表名


public class Helper extends OrmLiteSqliteOpenHelper {
    public Helper(Context context ) {
        super(context, "test", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
        try {
            // 建表
            TableUtils.createTable(connectionSource,UserInfoBean.class);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {

    }
}

第三布創建Dao層


public class DBManager {
    private Dao<UserInfoBean,String> dao;

    public DBManager(Context context) throws SQLException {
        Helper helper = new Helper(context);
        dao = helper.getDao(UserInfoBean.class);
    }

    // 創建數據
    public void insertStudent(UserInfoBean student) throws SQLException {
        //在數據庫中創建一條記錄,作用與SQLiteDatabase.insert一樣
        dao.createOrUpdate(student);
    }

    public void batchInsert(List<UserInfoBean> students) throws SQLException {
        dao.create(students);
    }

    /**
     * 查詢數據
     *
     * @return
     * @throws SQLException
     */
    public List<UserInfoBean> getStudent() throws SQLException {
        List<UserInfoBean> list = dao.queryForAll();
        return list;
    }

    /**
     * 查詢某個數據
     *
     * @return
     * @throws SQLException
     */
    public List<UserInfoBean> queryGuanyu() throws SQLException {
        //Eq是equals的縮寫
        //方法1
        List<UserInfoBean> list = dao.queryForEq("nickName", "張飛");

        //方法2
//        QueryBuilder queryBuilder = dao.queryBuilder();
////        queryBuilder.offset(); //偏移量
////        queryBuilder.limit(8l); //最多幾行  offset + limit 做分頁
////        queryBuilder.orderBy("age",true);
//        queryBuilder.where().eq("nickName","關羽"); //多條件查詢
//        List<UserInfoBean> query = queryBuilder.query();//此方法相當於build,提交設置
        return list;
    }

    /**
     * 刪除數據
     *
     * @param student
     * @throws SQLException
     */
    public void deleteStudent(UserInfoBean student) throws SQLException {
        //只看id
        dao.delete(student);
    }

    /**
     * 刪除指定數據
     *
     * @throws SQLException
     */
    public void deleteGuanyu() throws SQLException {
        DeleteBuilder deleteBuilder = dao.deleteBuilder();
        deleteBuilder.where().eq("nickName", "關羽");
        deleteBuilder.delete();
    }

    /**
     * 修改數據
     *
     * @param student
     * @throws SQLException
     */
    public void updateStudent(UserInfoBean student) throws SQLException {
        student.setNickName("關羽");
        dao.update(student);
    }


}

第四步 看一下表中的字段

//此乃表名   注:括號裏也可以不寫 不寫的話表名就默認是類名小寫
@DatabaseTable(tableName = "user")
public class UserInfoBean {
 
    @DatabaseField
    private long birthday;
    // 只有主鍵需要加括號裏的東西
    @DatabaseField(generatedId = true)
    private int id;
    @DatabaseField
    private long lastLoginTime;
    @DatabaseField
    private String nickName;
    @DatabaseField
    private String phone;
    @DatabaseField
    private int sex;
    @DatabaseField
    private String headPic;
    @DatabaseField
    private String sessionId;
    @DatabaseField
    private String pwd;
    @DatabaseField
    private int stats;
}

完成以上四步就可以將數據庫創建出來了,接下來測試一下是否可用

看一下佈局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
 
        <Button
            android:id="@+id/insert"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="插入數據" />

       
</LinearLayout>

看一下MainActivity的代碼


public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private DBManager dbManager;
    private List<UserInfoBean> mStudents;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化DBManager
        try {
            dbManager = new DBManager(this);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        initView();
        //剛進來時查詢所有的student
        queryStudent();

    }

    /**
     * 初始化控件
     */
    private void initView() {
        findViewById(R.id.insert).setOnClickListener(this);
    }

    /**
     * 查詢所有的student
     */
    public void queryStudent() {
        try {
            mStudents = dbManager.getStudent();
            Toast.makeText(this, "" + mStudents.size() + "", Toast.LENGTH_SHORT).show();

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.insert:
                //插入一條數據
                UserInfoBean student = new UserInfoBean();
                student.setNickName("張飛");
                student.setPhone("男");
                student.setId(123);
                student.setHeadPic("1607");
                student.setBirthday(11);
                student.setSex(2);
                student.setLastLoginTime(22);
                try {
                    dbManager.insertStudent(student);
                    queryStudent();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                break;
        }
    }

}

然後就可以將數據表導出 看是否插入成功

基本使用完畢

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章