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

Posted 小白萌新

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android—Ormlite框架简单的操作数据库相关的知识,希望对你有一定的参考价值。

大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app;本篇博客将详细介绍ORMLite的简易用法。

下面开始介绍ORMLite的入门用法~

1、下载 ORMLite Jar

首先去ORMLite官网下载jar包,对于android为:ormlite-android-5.0.jar 和 ormlite-core-5.0.jar ;

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)
12     private int id;
13     @DatabaseField(columnName="name")
14     private String name;
15     @DatabaseField(columnName="desc")
16     private String desc;
17     public int getId() {
18         return id;
19     }
20     public void setId(int id) {
21         this.id = id;
22     }
23     public String getName() {
24         return name;
25     }
26     public void setName(String name) {
27         this.name = name;
28     }
29     public String getDesc() {
30         return desc;
31     }
32     public void setDesc(String desc) {
33         this.desc = desc;
34     }
35     public Users( String name, String desc) {
36         super();
37         this.name = name;
38         this.desc = desc;
39     }
40     public Users() {
41         super();
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{
16     private static final String TABLE_NAME = "users.db";
17     /**
18      * usersDao,每张表对应一个
19      */
20     private Dao<Users,Integer> usersDao ;
21     
22     private static DatabaseHelper instance;
23     public DatabaseHelper(Context context) {
24         super(context, TABLE_NAME, null, 1);
25         // TODO Auto-generated constructor stub
26     }
27 
28     @Override
29     public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
30         // TODO Auto-generated method stub
31         try{
32             TableUtils.createTable(arg1, Users.class);
33         }catch(Exception e){
34             e.printStackTrace();
35         }
36     }
37 
38     @Override
39     public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,
40             int arg3) {
41         try  
42         {  
43             TableUtils.dropTable(connectionSource, Users.class, true);  
44             onCreate(arg0, connectionSource);  
45         } catch (SQLException e)  
46         {  
47             e.printStackTrace();  
48         }  
49         
50     }
51     /**
52      * 单例获取该Helper
53      */
54     public static synchronized DatabaseHelper getHelper(Context context){
55         if(instance == null){
56             synchronized (DatabaseHelper.class) {
57                 if(instance == null){
58                     instance = new DatabaseHelper(context);
59                 }
60             }
61         }
62         return instance;
63     }
64     
65     /**
66      * 获得userDao
67      * @throws SQLException 
68      */
69     public Dao<Users,Integer> getUsersDao() throws SQLException{
70         if(usersDao == null){
71             usersDao = getDao(Users.class);
72         }
73         return usersDao;
74     }
75 
76     
77     /**
78      * 释放资源
79      */
80     
81     @Override
82     public void close() {
83         // TODO Auto-generated method stub
84         super.close();
85         usersDao = 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);
    }
}

 

运行结果如下:

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

 

以上是关于Android—Ormlite框架简单的操作数据库的主要内容,如果未能解决你的问题,请参考以下文章

[ 转]Android快速开发–使用ORMLite操作数据库

Android菜鸟成长记12 -- ORMLite的简单使用

Android ORMLite 框架的入门用法

Android ORM 框架之 Android中ORMLite应用基础

Android ORM 框架之 Android中ORMLite应用基础

Android数据库框架-----ORMLite 的基本用法