Android—Ormlite框架简单的操作数据库

家资是何物,积帙列梁梠。这篇文章主要讲述Android—Ormlite框架简单的操作数据库相关的知识,希望能为你提供帮助。
大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app;本篇博客将详细介绍ORMLite的简易用法。
下面开始介绍ORMLite的入门用法~
1、下载 ORMLite Jar首先去ORMLite官网下载jar包,对于android为:ormlite-android-5.0.jar 和 ormlite-core-5.0.jar ;
【Android—Ormlite框架简单的操作数据库】ps:访问不了的朋友,文章末尾会把jar、源码、doc与本篇博客例子一起打包提供给大家下载。
2、配置Bean类有了jar,我们直接新建一个项目为:OrmliteDemo,然后把jar拷贝到libs下。
然后新建一个包:com.my.bean专门用于存放项目中的Bean,首先新建一个Usera.Java
Users:

1 package com.my.bean; 2 3 import com.j256.ormlite.field.DatabaseField; 4 import com.j256.ormlite.table.DatabaseTable; 5 6 7 8 9 @DatabaseTable(tableName="tb_users") 10 public class Users { 11@DatabaseField(generatedId=true) 12private int id; 13@DatabaseField(columnName="name") 14private String name; 15@DatabaseField(columnName="desc") 16private String desc; 17public int getId() { 18return id; 19} 20public void setId(int id) { 21this.id = id; 22} 23public String getName() { 24return name; 25} 26public void setName(String name) { 27this.name = name; 28} 29public String getDesc() { 30return desc; 31} 32public void setDesc(String desc) { 33this.desc = desc; 34} 35public Users( String name, String desc) { 36super(); 37this.name = name; 38this.desc = desc; 39} 40public Users() { 41super(); 42// TODO Auto-generated constructor stub 43} 44 45 46 47 }

首先在User类上添加@DatabaseTable(tableName = "tb_user"),标明这是数据库中的一张表,标明为tb_users
 
然后分别在属性上添加@DatabaseField(columnName = "name") ,columnName的值为该字段在数据中的列名
@DatabaseField(generatedId = true) ,generatedId 表示id为主键且自动生成
 
3、编写DAO类原生的数据库操作,需要继承SQLiteOpenHelper,这里我们需要继承OrmLiteSqliteOpenHelper
DatabaseHelper:
1 package com.my.db; 2 3 import java.sql.SQLException; 4 5 import android.content.Context; 6 import android.database.sqlite.SQLiteDatabase; 7 8 import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; 9 import com.j256.ormlite.dao.Dao; 10 import com.j256.ormlite.support.ConnectionSource; 11 import com.j256.ormlite.table.TableUtils; 12 import com.my.bean.Users; 13 14 15 public class DatabaseHelper extends OrmLiteSqliteOpenHelper{ 16private static final String TABLE_NAME = "users.db"; 17/** 18* usersDao,每张表对应一个 19*/ 20private Dao< Users,Integer> usersDao ; 21 22private static DatabaseHelper instance; 23public DatabaseHelper(Context context) { 24super(context, TABLE_NAME, null, 1); 25// TODO Auto-generated constructor stub 26} 27 28@Override 29public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) { 30// TODO Auto-generated method stub 31try{ 32TableUtils.createTable(arg1, Users.class); 33}catch(Exception e){ 34e.printStackTrace(); 35} 36} 37 38@Override 39public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2, 40int arg3) { 41try 42{ 43TableUtils.dropTable(connectionSource, Users.class, true); 44onCreate(arg0, connectionSource); 45} catch (SQLException e) 46{ 47e.printStackTrace(); 48} 49 50} 51/** 52* 单例获取该Helper 53*/ 54public static synchronized DatabaseHelper getHelper(Context context){ 55if(instance == null){ 56synchronized (DatabaseHelper.class) { 57if(instance == null){ 58instance = new DatabaseHelper(context); 59} 60} 61} 62return instance; 63} 64 65/** 66* 获得userDao 67* @throws SQLException 68*/ 69public Dao< Users,Integer> getUsersDao() throws SQLException{ 70if(usersDao == null){ 71usersDao = getDao(Users.class); 72} 73return usersDao; 74} 75 76 77/** 78* 释放资源 79*/ 80 81@Override 82public void close() { 83// TODO Auto-generated method stub 84super.close(); 85usersDao = null; 86} 87 }

这里我们需要继承OrmLiteSqliteOpenHelper,其实就是间接继承了SQLiteOpenHelper
然后需要实现两个方法:
1、onCreate(SQLiteDatabase database,ConnectionSource connectionSource)
创建表,我们直接使用ormlite提供的TableUtils.createTable(connectionSource, User.class); 进行创建~
2、onUpgrade(SQLiteDatabase database,  ConnectionSource connectionSource, int oldVersion, int newVersion)
更新表,使用ormlite提供的TableUtils.dropTable(connectionSource, User.class, true); 进行删除操作~
删除完成后,别忘了,创建操作:onCreate(database, connectionSource);
 
然后使用单例公布出一个创建实例的方法,getHelper用于获取我们的help实例;
4、显示在Activity MainActivity:
package com.example.ormlitedemo; import java.util.List; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.LinearLayout; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TableRow.LayoutParams; import android.widget.TextView; import com.j256.ormlite.dao.Dao; import com.my.bean.Users; import com.my.db.DatabaseHelper; public class MainActivity extends Activity { private Dao< Users,Integer> usersDao; private Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = this; //新建一个表格布局 TableLayout tblay = new TableLayout(this); //给该Activity设置布局 setContentView(tblay,new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); //插入数据 init(); try{//取出数据 List< Users> users = getList(); //遍历集合 for (Users u : users) { //创建一行 TableRow tr = new TableRow(this); //新建文本视图 TextView v1 = new TextView(this); TextView v2 = new TextView(this); TextView v3 = new TextView(this); v1.setText(u.getId()+""); v2.setText(u.getName()); v3.setText(u.getDesc()); //把文本视图添加到TableRow中 tr.addView(v1,new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1)); tr.addView(v2,new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1)); tr.addView(v3,new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1)); //把TableRow添加到TableLayout中 tblay.addView(tr); }}catch(Exception e){ e.printStackTrace(); } } //插入数据 public void init(){ DatabaseHelper helper = DatabaseHelper.getHelper(context); try{ Users u1 = new Users("zhy","2b铅笔"); usersDao = helper.getUsersDao(); usersDao.create(u1); u1 = new Users("zhy2", "2b铅笔"); usersDao.create(u1); u1 = new Users("zhy3", "2b铅笔"); usersDao.create(u1); u1 = new Users("zhy4", "2b铅笔"); usersDao.create(u1); u1 = new Users("zhy5", "2b铅笔"); usersDao.create(u1); u1 = new Users("zhy6", "2b铅笔"); usersDao.create(u1); }catch(Exception e){ e.printStackTrace(); } } //查询所有操作 public List< Users> getList(){ DatabaseHelper helper = DatabaseHelper.getHelper(context); List< Users> users = null; try{ users = helper.getUsersDao().queryForAll(); }catch(Exception e){ e.printStackTrace(); } return users; }//删除操作 public void DeleteUser(){ DatabaseHelper helper = DatabaseHelper.getHelper(context); try{ helper.getUsersDao().deleteById(2); }catch(Exception e){ e.printStackTrace(); } } //更新操作 public void UpdateUser(){ DatabaseHelper helper = DatabaseHelper.getHelper(context); try{ Users u1 = new Users("lisi", "4b铅笔"); u1.setId(3); helper.getUsersDao().update(u1); }catch(Exception e){ e.printStackTrace(); }}@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }

 
运行结果如下:
Android—Ormlite框架简单的操作数据库

文章图片

好了,Ormlite的简单操作就说这里了。。。。希望对大家有用,不喜勿喷
 

    推荐阅读