在我们的开发中,为了提高开发效率,我们一般都会使用到框架,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包

  1. package com.example.ormlitetest;
  2.  
  3. import java.sql.SQLException;
  4.  
  5. import android.content.Context;
  6. import android.database.sqlite.SQLiteDatabase;
  7. import android.database.sqlite.SQLiteDatabase.CursorFactory;
  8. import android.util.Log;
  9.  
  10. import com.example.bean.student;
  11. import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
  12. import com.j256.ormlite.dao.Dao;
  13. import com.j256.ormlite.support.ConnectionSource;
  14. import com.j256.ormlite.table.TableUtils;
  15.  
  16. public class DataBaseHelp extends OrmLiteSqliteOpenHelper{
  17.  
  18. private static final int version = ;
  19. private static final String DB_NAME = "text_data.db";
  20. //每张表对应一个
  21. private Dao<student,Integer> studao ;
  22.  
  23. public Dao<student,Integer> getDao() throws SQLException{
  24. if(studao == null){
  25. studao = getDao(student.class);
  26. }
  27. return studao;
  28. }
  29.  
  30. public DataBaseHelp(Context context) {
  31. super(context, DB_NAME, null, version);
  32. // TODO Auto-generated constructor stub
  33. }
  34.  
  35. @Override
  36. public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) {
  37. try {
  38. TableUtils.createTable(connectionSource, student.class);
  39. Log.i("tag", "创建数据库success");
  40. } catch (Exception e) {
  41. Log.i("tag", "错误");
  42. }
  43.  
  44. }
  45.  
  46. @Override
  47. public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,
  48. int arg3) {
  49. // TODO Auto-generated method stub
  50.  
  51. }
  52.  
  53. @Override
  54. public void close() {
  55. // TODO Auto-generated method stub
  56. super.close();
  57. studao = null;
  58. }
  59.  
  60. }

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

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

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

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

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

    JSON的定义  一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  2. Android菜鸟成长记4-button点击事件

    Button 1.button按钮的创建 一般来说,在我们新建一个Android项目的时候,会有会默认有一个activity_main.xml的文件 如果你在新建项目的时候,把Create Activ ...

  3. Android菜鸟成长记14 -- AsnyTask

    本篇随笔将讲解一下Android的多线程的知识,以及如何通过AsyncTask机制来实现线程之间的通信. 一.Android当中的多线程 在Android当中,当一个应用程序的组件启动的时候,并且没有 ...

  4. Android菜鸟成长记10 -- ListVew

     ListView在我们学习Android的过程中是非常重要得一个部分. listview主要有两个职责 1)将数据填充到布局. 2)处理用户的选择点击等操作. 一个ListView的创建需要3个元素 ...

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

    在项目开发的时候,由于系统给出的控件不够美观,因此开发时领导常常要我更改下界面,用美工给的图片取代系统图片.开始时,我只是给按钮等设置一下背景图片,这样做虽然美观了,但界面看起来却比较死板,比如用户点 ...

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

    前面我们简单的介绍了一下android的五大布局,那么现在我们来实践一下,写一个简单的微信界面 首先,我们新建一个weixin.xml的linnerlayout布局 我们日常使用的微信,从简单的方面来 ...

  7. Android菜鸟成长记7 -- Android的五大布局

    Android五大布局,相信android的都了解过,今天我根据自己的学习整理一下五大布局,主要介绍的是线性布局(LiearLayout),因为,其他的布局使用率不是很高. Android的五大布局 ...

  8. Android菜鸟成长记6 -- 网络连接的检查

    在android开发中我们要经常考虑到各种问题.在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒.一般可以通过ConnectivityManager ...

  9. Android菜鸟成长记5-ADB和sqllite

    Android开发环境中,ADB是我们进行Android开发经常要用的调试工具,它的使用当然是我们Android开发者必须要掌握的. ADB概述 Android Debug Bridge,Androi ...

随机推荐

  1. require.js

    日期: 2012年11月 7日 http://www.ruanyifeng.com/blog/2012/11/require_js.html 这个系列的第一部分和第二部分,介绍了Javascript模 ...

  2. LeetCode 328. Odd Even Linked List

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  3. Servers

    Servers¶ Server interface. class novaclient.v1_1.servers.Server(manager, info, loaded=False) Bases: ...

  4. IntelliJ IDEA 使用说明(For Eclipse user)

    IDEA和Eclipse主要在用户界面,编译方法和快捷键上有所差别. 1. 用户界面 1.1 No workspace IDEA 的Project相当于Eclipse的workspace,具体概念对比 ...

  5. Access数据库的模糊查询到底是用*还是%

    今天被用了一下Access数据库,结果被它的模糊查询给折腾了一上午,到底是用*还是%?特此记下来 事情是这样的,我用C#写了个小的窗体程序,访问Access数据库进行一个模糊查询,我先手工往Acces ...

  6. java BigDecimal add 等方法遇到的问题

    //这篇随笔是为了提醒自己避免重复错误 //原先的代码是这样的,想着输出会是9.00,可是结果却是0.00 BigDecimal day_fee = new BigDecimal("0.00 ...

  7. 使用struts通配符报错

    报错截图如下: 主要原因是:对大小写敏感. struts.xml StudentAction.java jsp页面:(重点就是这里,锚里面需要特别注意,大小写应该与struts.xml里面的保持一致, ...

  8. Take advantage of “Integrated Calling” to know whom suspect talked to

    A new feature in iOS 10 is "Integrated Calling". An integrated call from Chat App like Nav ...

  9. java程序员需要掌握些什么知识

    java程序员需要掌握些什么知识 合格的程序员应具有实际开发能力的Java和J2EE.如今的IT企业需求量大,但人才紧缺的.企业需要大量掌握Java/JEE/Oracle/WebLogic/Websp ...

  10. 思达index网站

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...