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实现数据持久化的简单使用_第1张图片

更多相关文章

  1. Android 使用ORMLite打造万能泛型Dao简化数据持久化层
  2. Android操作HTTP实现与服务器通信
  3. Android数据推送实现方案
  4. Android文件操作中的openFileOutPut和openFileInput
  5. Android中的数据传递之Parcelable接口

随机推荐

  1. android工具之adb monkey
  2. delphi xe 之路(28)Android SDK API 层次
  3. Android与服务器端数据交互(1)
  4. Android libyuv应用系列(二)libyuv在Androi
  5. android消息机制(handler运行机制)解析
  6. Android:模拟器使用命令安装apk
  7. android 再按一次退出程序
  8. Android 桌面角标在各大品牌机型上的实现
  9. 【Android】Android Studio实战快速高效
  10. Android 的 selector--背景选择器