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的简单操作就说这里了。。。。希望对大家有用,不喜勿喷

时间: 2024-07-29 12:44:23

Android—Ormlite框架简单的操作数据库的相关文章

Android Afinal框架学习(一) FinalDb 数据库操作

框架地址:https://github.com/yangfuhai/afinal 对应源码: net.tsz.afinal.annotation.sqlite.* net.tsz.afinal.db.sqlite.* net.tsz.afinal.db.table.* net.tsz.afinal.utils.ClassUtils.net.tsz.afinal.utils.FieldUtils FinalDb 建库 FinalDb db = FinalDb.create(context, "my

Android ORMLite 框架的入门用法

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39121377 大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app:本篇博客将详细介绍ORMLite的简易用法. 下面开始介绍ORMLite的入门用法~ 1.下载 ORMLite Jar 首先去ORMLite官网下载jar包,对于Android为:ormlite-android-4.48.

初学时简单的操作数据库方法

一:cmd操作数据库--开启数据库net start mysql --关闭数据库net stop mysql --1:连接数据库mysql -uroot -p --2:查询数据库show databases; --3:设置字符编码set names gbk; --4:增加数据库create database if not exists 库名; --5:查看数据库的创建语句(是如何创建的)show create database 库名: --6:删除数据库drop database if exis

Java_Web三大框架之Hibernate操作数据库(三)

使用Hibernate操作数据库需要七个步骤: (1)读取并解析配置文件 Configuration conf = newConfiguration().configure(); (2)读取并解析映射信息,创建SessionFactory SessionFactory sf = conf.buildSessionFactory(); (3)打开Session Session session = sf.openSession(); (4)开始一个事务(增删改操作必须,查询操作可选) Transac

Android上的事件流操作数据库

最近在浏览某篇有关事件流的文章时,里面提到了数据的流处理,兴趣来了,就想看看能否在Android端实现一个. 根据文章的介绍,将每次数据的变更事件,像是插入,删除或者更新等,记为一个不可变的事件,让数据在事件中流淌,而不是对数据库进行破坏性的写入,也就是说,直接读取数据的聚合结果就能获取最好的性能. 事件流可以完成下面的工作: 1.获取所有的原始事件,可能需要进行转换,然后将它们加载到一个大型的数据仓库中供分析人员使用: 2.更新全文搜索索引,使用户可以搜索最新的数据: 3.更新缓存,使系统可以

Android中使用SQL语句操作数据库

数据的增加 1.创建一个SQLite数据的帮助类 SQLiteDatabase db = helper.getWritableDatabase(); 2.执行SQL语句,实现数据的增加 db.execSQL("insert into person (name,number) values (?,?)", new Object[] { name, number }); 3.关闭数据库 db.close(); 数据的删除 1.创建一个SQLite数据的帮助类 SQLiteDatabase

Android 快速开发系列 ORMLite 框架的使用

上一篇已经对ORMLite框架做了简单的介绍:Android ORMLite 框架的入门用法~~本篇将介绍项目可能会使用到的一些用法,也为我们的使用ORMLite框架总结出一个较合理的用法. 通过上一篇的了解,我们使用ORMLite,需要自己写一个DatabaseHelper去继承OrmLiteSqliteOpenHelper,下面我们首先给出一个我认为比较靠谱的Helper的写法: 1.DatabaseHelper package com.zhy.zhy_ormlite.db; import

Android 快速开发系列 ORMLite 框架最佳实践

上一篇已经对ORMLite框架做了简单的介绍:Android ORMLite 框架的入门用法~~本篇将介绍项目可能会使用到的一些用法,也为我们的使用ORMLite框架总结出一个较合理的用法. 通过上一篇的了解,我们使用ORMLite,需要自己写一个DatabaseHelper去继承OrmLiteSqliteOpenHelper,下面我们首先给出一个我认为比较靠谱的Helper的写法: 1.DatabaseHelper [java] view plaincopy package com.zhy.z

开源框架GreenDao的操作

1.为什么需要GreenDao?Google原生API不方便 @1手动组拼SQL语句 @2需要自己写操作数据库代码 @3不能把数据库中的数据映射成对象 @4没有实现关联查询 2.GreenDao是什么? 开源的数据库操作框架,让操作数据库变为操作对象 3.GreenDao的优点? @1让业务代码访问对象,而不是操作数据库表 @2隐藏了面向对象的逻辑SQL查询详情 @3无须处理数据库实现 4.ANDROID主流ORM框架 @1 OrmLite @2 SugarORM @3 LitePal @4 G