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

  在我们的开发中,为了提高开发效率,我们一般都会使用到框架,ormilte则是我们必不可少的数据库框架。

  对于ORMLite我也是今天才刚刚接触,我们先从一个简单的项目来了解它吧。

ORMLite jar

  要想使用ormlite,我们要先下载其jar包。

  下载方法:

    我们可以到官网去下载:http://ormlite.com/releases/

    下载的时候,我们要下载一个core的jar和android的jar,本人用的是ormlite-android-5.0.jar和ormlite-core-5.0.jar

    然后把我们下载好的jar放在我项目中的lib下,然后加载到项目中即可

   

编写Bean类

 1 package com.example.bean;
 2
 3 import com.j256.ormlite.field.DatabaseField;
 4 import com.j256.ormlite.table.DatabaseTable;
 5
 6 @DatabaseTable(tableName="t_student")
 7 public class student {
 8
 9     //generatedId表示该字段名为主键,却自增长
10     @DatabaseField(generatedId=true)
11     private int stuId;
12     @DatabaseField(columnName="stuName")
13     private String stuName;
14     @DatabaseField(columnName="age")
15     private int age;
16     public int getStuId() {
17         return stuId;
18     }
19     public void setStuId(int stuId) {
20         this.stuId = stuId;
21     }
22     public String getStuName() {
23         return stuName;
24     }
25     public void setStuName(String stuName) {
26         this.stuName = stuName;
27     }
28     public int getAge() {
29         return age;
30     }
31     public void setAge(int age) {
32         this.age = age;
33     }
34
35 }

@DatabaseTable(tableName = "tb_user"),标明这是数据库中的一张表

@DatabaseField(columnName = "name") ,columnName的值为该字段在数据中的列名

@DatabaseField(generatedId = true) ,generatedId 表示id为主键且自动生成

编写ORMilte的dao包

package com.example.ormlitetest;

import java.sql.SQLException;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.util.Log;

import com.example.bean.student;
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 DataBaseHelp extends OrmLiteSqliteOpenHelper{

    private static final int version = 1;
    private static final String DB_NAME = "text_data.db";
    //每张表对应一个
    private Dao<student,Integer> studao ;

    public Dao<student,Integer> getDao() throws SQLException{
        if(studao == null){
            studao = getDao(student.class);
        }
        return studao;
    }

    public DataBaseHelp(Context context) {
        super(context, DB_NAME, null, version);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) {
        try {
            TableUtils.createTable(connectionSource, student.class);
            Log.i("tag", "创建数据库success");
        } catch (Exception e) {
            Log.i("tag", "错误");
        }

    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,
            int arg3) {
        // TODO Auto-generated method stub

    }

    @Override
    public void close() {
        // TODO Auto-generated method stub
        super.close();
        studao = null;
    }

}

这里我们需要继承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);

MainActivity类通用数据库

  1 package com.example.ormlitetest;
  2
  3 import java.sql.SQLException;
  4 import java.util.*;
  5
  6 import com.example.bean.student;
  7
  8 import android.app.Activity;
  9 import android.database.sqlite.SQLiteDatabase;
 10 import android.os.Bundle;
 11 import android.util.Log;
 12 import android.view.LayoutInflater;
 13 import android.view.View;
 14 import android.view.ViewGroup;
 15 import android.widget.BaseAdapter;
 16 import android.widget.ListView;
 17 import android.widget.TextView;
 18
 19 public class MainActivity extends Activity {
 20
 21
 22     private SQLiteDatabase db;
 23     private ListView lv;
 24     private List<student> stulist = new ArrayList<student>();
 25
 26     @Override
 27     protected void onCreate(Bundle savedInstanceState) {
 28         super.onCreate(savedInstanceState);
 29         setContentView(R.layout.activity_main);
 30
 31         DataBaseHelp help = new DataBaseHelp(MainActivity.this);
 32
 33         for (int i = 0; i < 100; i++) {
 34             student s = new student();
 35             s.setStuName("好无聊" + i);
 36             s.setAge(i);
 37             try {
 38                 help.getDao().create(s);
 39             } catch (SQLException e) {
 40                 // TODO Auto-generated catch block
 41                 e.printStackTrace();
 42             }
 43         }
 44         try {
 45             stulist = help.getDao().queryForAll();
 46         } catch (SQLException e) {
 47             // TODO Auto-generated catch block
 48             e.printStackTrace();
 49         }
 50         lv = (ListView) findViewById(R.id.listView1);
 51         lv.setAdapter(new BaseAdapter() {
 52
 53             public View getView(int position, View convertView, ViewGroup parent) {
 54                 View view = null;
 55                 if (convertView == null) {
 56                     Log.i("info:", "没有缓存,重新生成" + position);
 57                     LayoutInflater inflater = MainActivity.this
 58                             .getLayoutInflater();
 59                     // 因为getView()返回的对象,adapter会自动赋给ListView
 60                     view = inflater
 61                             .inflate(R.layout.list_item, null);
 62                 } else {
 63                     Log.i("info:", "有缓存,不需要重新生成" + position);
 64                     view = convertView;
 65                 }
 66                 student s = stulist.get(position);
 67
 68                 TextView tv_userName = (TextView) view
 69                         .findViewById(R.id.tv_stuName);
 70                 tv_userName.setText(s.getStuName());
 71                 tv_userName.setTextSize(15);
 72
 73                 TextView tv_lastMessage = (TextView) view
 74                         .findViewById(R.id.tv_age);
 75                 tv_lastMessage.setText(s.getAge()+"");
 76                 tv_lastMessage.setTextSize(12);
 77
 78                 return view;
 79             }
 80
 81             @Override
 82             public long getItemId(int arg0) {
 83                 // TODO Auto-generated method stub
 84                 return 0;
 85             }
 86
 87             @Override
 88             public Object getItem(int arg0) {
 89                 // TODO Auto-generated method stub
 90                 return null;
 91             }
 92
 93             @Override
 94             public int getCount() {
 95                 // TODO Auto-generated method stub
 96                 return stulist.size();
 97             }
 98         });
 99         help.close();
100     }
101
102 }

然后我们运行一下程序看一下

好了, 这就是本人对于ORMLite的初步了解。

时间: 2024-08-02 15:10:52

Android菜鸟成长记12 -- ORMLite的简单使用的相关文章

Android菜鸟成长记9 -- selector的用法

在项目开发的时候,由于系统给出的控件不够美观,因此开发时领导常常要我更改下界面,用美工给的图片取代系统图片.开始时,我只是给按钮等设置一下背景图片,这样做虽然美观了,但界面看起来却比较死板,比如用户点击了按钮后,按钮没一点反应.于是我就再给控件添加上onTouch监听事件,按下后改变背景颜色,松手后再恢复原来颜色.但后来发现了selector这个利器,真是喜出望外,不用再添加onTouch监听事件了,用起来也方便灵活.不得不说,多和其他开发人员交流技术经验等还是很有必要的,特别是像我这样独自负责

Android菜鸟成长记8 -- 布局实践(微信界面的编写)

前面我们简单的介绍了一下android的五大布局,那么现在我们来实践一下,写一个简单的微信界面 首先,我们新建一个weixin.xml的linnerlayout布局 我们日常使用的微信,从简单的方面来说我可一分成三个内容,头部标签栏,中间显示信息栏,还有一个底部.那么我们就按照这个来先建一个页面 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="

Android菜鸟成长记1 -- JSON的解析

JSON的定义  一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. android提供的json解析类 android的json解析部分都在包org.json下,主要有以下几个类: JSONObject:可以看作是一个json对象,这是系统中有关JSON定义的基本单元,其包含一对儿(Key/

Android菜鸟成长记5-ADB和sqllite

Android开发环境中,ADB是我们进行Android开发经常要用的调试工具,它的使用当然是我们Android开发者必须要掌握的. ADB概述 Android Debug Bridge,Android调试桥接器,简称adb,是用于管理模拟器或真机状态的万能工具,采用了客户端-服务器模型,包括三个部分: 1.客户端部分,运行在开发用的电脑上,可以在命令行中运行adb命令来调用该客户端,像ADB插件和DDMS这样的Android工具也可以调用adb客户端. 2.服务端部分,是运行在开发用电脑上的后

Android菜鸟成长记11 -- sqlite数据库的设计和升降级

Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小. 2.独立性 SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的"安装". 3.隔离性 SQLite 数据库中所有的信息(比如表.视图.触发器等)都包含在一个文件夹内,方便管理和维护. 4.跨平台 SQLite 目前

Android菜鸟成长记15 -- BitMap

BitMap简介 Bitmap是Android系统中的图像处理的最重要类之一.用它可以获取图像文件信息,进行图像剪切.旋转.缩放等操作,并可以指定格式保存图像文件.本文从应用的角度,着重介绍怎么用Bitmap来实现这些功能. BitMap的常用属性 1. BitMap类 public void recycle()--回收位图占用的内存空间,把位图标记为Dead  public final boolean isRecycled() --判断位图内存是否已释放  public final int g

菜鸟成长记1,软件工程大一经历

菜鸟成长记1 -----大一总结及反思 大一即将结束,突然间想总结一下我的大一生活,最重要的还是好好反思一下. 回首整个大一感觉自己学了好多的东西,但最终的感觉还是一无所成,大一上学期学习c语言,一直处于一个总是一个没有入门的感觉,虽然简单的c经长期磨练已经差不多搞懂,不过稍微复杂点的抑或着说稍微麻烦点的都没有真正学会,仅仅是学过c而已,在学c的同时一直想练ACM可能真的是天赋不够也可能是自己不是这块料,在几经折磨下,做了uva上不超过30道题的情况下放弃了,除想练ACM这中间还接触了java和

菜鸟成长记

突然才发现,昨天(20-03-2016)刚好是自己入圆5周年.时间一下子回到了之前,刚刚入圆的那一天(20-03-2011). 记得那天注册,是在大学宿舍的晚上,天开始变得模模糊糊的时候.还清楚的记得,那个时候自己还在自学jsp&servlet! 菜鸟,对于那个时候的我来说,再没有更好的称呼了. 我想谈谈我自己的一些经历,和大家分享一下.如果你觉得好听,或者受用,那么也就达到了我的目的.如果你觉得没什么意思,或者说收获不多,那么就当做杂文一扫而过也无妨.之前有网友发消息给我说:希望我给她一些指导

[菜鸟成长记]iOS开发自学笔记01-向helloworld致敬

我有一个梦想就是成为一个iOS开发.........菜鸟,老规矩,一切从helloworld开始. iOS8伴随着iphone6/6plus而来,Xcode6伴随着iOS8而来,苹果更新换代的速度依然很快,从硬件到软件,每次更新就意味着开发者们又要面临着一次次的恶补,当然,像我这样励志成为iOS开发菜鸟的人来说,目前还没有到面临这些问题的烦恼,我只需要专心做好我的hello world小程序,就像我从前无数次地在其他平台一样. 首先打开Xcode后从模板中选择single view applic