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();        }    }}

运行结果如下:

更多相关文章

  1. Android:创建窗口式Activity
  2. Xamarin.Android使用教程之创建第一个Android应用程序
  3. Android(安卓)中创建avd和sdcard
  4. Android(安卓)9 (P)系统启动之SystemServer大揭秘下
  5. Android中的消息机制:Handler消息传递机制
  6. Android入门 — 模拟器的创建和运行
  7. Android开发起步
  8. 创建你的第一个Android(安卓)PHP应用
  9. Android:模拟器使用命令安装apk

随机推荐

  1. 【Android】ListView多选模式的使用
  2. Android(安卓)studio rebuild之后找不到R
  3. Android(安卓)引用使用外部字体
  4. Battery Historian分析手机耗电神器
  5. Unity与AndroidStudio对接后,Unity打包Apk
  6. (九)Android(安卓)项目集成 Flutter 模块
  7. Android仿照钉钉的人名头像
  8. android aidl 使用详解
  9. Android(安卓)libdvm.so 与 libart.so
  10. Android(安卓)studio 二维码开源项目ZXin