zoukankan      html  css  js  c++  java
  • 关系数据库ORMlite的用法;

    首先要在 http://ormlite.com/releases 页面下载两个jar 包:

    (1)core列表下的jar包; (2)android列表下的jar包。

    将上面的两个jar包下载后放到Android工程项目中的libs包中。

    在创建一个java类来存放数据,

     1 package zhangphil.ormlitetest.database;
     2 
     3 import com.j256.ormlite.field.DatabaseField;
     4 import com.j256.ormlite.table.DatabaseTable;
     5 
     6 @DatabaseTable(tableName = "users")
     7 public class User {
     8 
     9     public final static String USER_ID = "user_id";
    10     public final static String NAME = "name";
    11     public final static String AGE = "age";
    12 
    13     public User() {
    14 
    15     }
    16 
    17     public User(String name, int age) {
    18         this.name = name;
    19         this.age = age;
    20     }
    21 
    22     // @DatabaseField(generatedId = true)
    23     // public int id;
    24 
    25     @DatabaseField(id = true, columnName = USER_ID)
    26     public int user_id;
    27 
    28     @DatabaseField(columnName = NAME)
    29     public String name;
    30 
    31     @DatabaseField(columnName = AGE)
    32     public int age;
    33 
    34     public int getUserId() {
    35         return user_id;
    36     }
    37 
    38     public void setUserId(int uid) {
    39         this.user_id = uid;
    40     }
    41 
    42     public String getName() {
    43         return name;
    44     }
    45 
    46     public void setName(String name) {
    47         this.name = name;
    48     }
    49 
    50     public int getAge() {
    51         return age;
    52     }
    53 
    54     public void setAge(int age) {
    55         this.age = age;
    56     }
    57 
    58     @Override
    59     public String toString() {
    60         return "user_id:" + user_id + " 姓名:" + name + " 年龄:" + age;
    61     }
    62 }

    创建一个ORMLite数据库管理工具类:

     1 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.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
    11 import com.j256.ormlite.dao.Dao;
    12 import com.j256.ormlite.support.ConnectionSource;
    13 import com.j256.ormlite.table.TableUtils;
    14 
    15 public class ORMLiteDatabaseHelper extends OrmLiteSqliteOpenHelper {
    16 
    17     private static ORMLiteDatabaseHelper mDatabaseHelper = null;
    18     private Dao<User, Integer> mUserDao = null;
    19 
    20     private final static String DataBase_NAME = "ormlite.db";
    21     private final static int DataBase_VERSION = 1;
    22 
    23     public ORMLiteDatabaseHelper(Context context, String databaseName,
    24             CursorFactory factory, int databaseVersion) {
    25         super(context, DataBase_NAME, factory, DataBase_VERSION);
    26     }
    27 
    28     public static ORMLiteDatabaseHelper getInstance(Context context) {
    29         if (mDatabaseHelper == null) {
    30             mDatabaseHelper = new ORMLiteDatabaseHelper(context, DataBase_NAME,
    31                     null, DataBase_VERSION);
    32         }
    33 
    34         return mDatabaseHelper;
    35     }
    36 
    37     @Override
    38     public void onCreate(SQLiteDatabase arg0, ConnectionSource connectionSource) {
    39 
    40         Log.d(this.getClass().getName(), "ORMLite数据库 -> onCreate");
    41 
    42         try {
    43             TableUtils.createTableIfNotExists(connectionSource, User.class);
    44         } catch (Exception e) {
    45             e.printStackTrace();
    46         }
    47     }
    48 
    49     @Override
    50     public void onUpgrade(SQLiteDatabase database, ConnectionSource arg1,
    51             int arg2, int arg3) {
    52 
    53         Log.i(this.getClass().getName(), "数据库 -> onUpgrade");
    54 
    55         try {
    56             // 删除旧的数据库表。
    57             TableUtils.dropTable(connectionSource, User.class, true);
    58 
    59             // 重新创建新版的数据库。
    60             onCreate(database, connectionSource);
    61         } catch (SQLException e) {
    62             e.printStackTrace();
    63         }
    64     }
    65 
    66     /**
    67      * 每一个数据库中的表,要有一个获得Dao的方法。 可以使用一种更通用的模板方法如:
    68      * 
    69      * public Dao<Class, Integer> getORMLiteDao(Class cls) throws SQLException {
    70      * if (dao == null) { dao = getDao(cls); }
    71      * 
    72      * return dao; }
    73      */
    74     public Dao<User, Integer> getUserDao() {
    75         if (mUserDao == null) {
    76             try {
    77                 mUserDao = getDao(User.class);
    78             } catch (java.sql.SQLException e) {
    79                 e.printStackTrace();
    80             }
    81         }
    82 
    83         return mUserDao;
    84     }
    85 
    86     @Override
    87     public void close() {
    88         super.close();
    89         mUserDao = null;
    90     }
    91 }


    最后在mainactivity中操作添加数据:

     1 import java.sql.SQLException;
     2 import java.util.List;
     3 import java.util.Random;
     4 
     5 import com.j256.ormlite.dao.Dao;
     6 
     7 import zhangphil.ormlitetest.database.ORMLiteDatabaseHelper;
     8 import zhangphil.ormlitetest.database.User;
     9 import android.support.v7.app.ActionBarActivity;
    10 import android.widget.Toast;
    11 import android.os.Bundle;
    12 
    13 public class MainActivity extends ActionBarActivity {
    14 
    15     private Dao<User, Integer> mUserDao;
    16 
    17     @Override
    18     protected void onCreate(Bundle savedInstanceState) {
    19         super.onCreate(savedInstanceState);
    20 
    21         ORMLiteDatabaseHelper mDatabaseHelper = ORMLiteDatabaseHelper
    22                 .getInstance(this);
    23         mUserDao = mDatabaseHelper.getUserDao();
    24 
    25         Random rand = new Random();
    26         for (int i = 0; i < 3; i++) {
    27             User user = new User();
    28             user.setUserId(i);
    29             user.setName("name" + i);
    30             // 生成随机测试的年龄。
    31             user.setAge(rand.nextInt(100));
    32 
    33             try {
    34                 mUserDao.createOrUpdate(user);
    35             } catch (SQLException e) {
    36                 e.printStackTrace();
    37             }
    38         }
    39     }
    40 
    41     @Override
    42     public void onStart() {
    43         super.onStart();
    44 
    45         // 全局查询
    46         try {
    47             List<User> users = mUserDao.queryForAll();
    48 
    49             for (User u : users) {
    50                 Toast.makeText(this, u.toString(), Toast.LENGTH_SHORT).show();
    51             }
    52         } catch (SQLException e) {
    53             e.printStackTrace();
    54         }
    55 
    56         // 条件查询QueryBuilder
    57         // 假设我们给定一个用户的id=1
    58         int uid = 1;
    59         try {
    60             List<User> users = mUserDao.queryBuilder().where()
    61                     .eq(User.USER_ID, uid).query();
    62 
    63             for (User u : users) {
    64                 Toast.makeText(this, "查询结果 : " + u.toString(),
    65                         Toast.LENGTH_SHORT).show();
    66             }
    67         } catch (SQLException e) {
    68             e.printStackTrace();
    69         }
    70     }
    71 }
  • 相关阅读:
    团队项目个人工作总结(4.27)
    团队项目个人工作总结(4.26)
    团队项目个人工作总结(4.25)
    评测—输入法
    学习进度(2016.4.24)
    团队项目个人工作总结(4.24)
    团队项目个人工作总结(4.23)
    第一阶段冲刺(第四天)
    典型用户和用户场景描述
    第一阶段冲刺(第三天)
  • 原文地址:https://www.cnblogs.com/labixiaoxin/p/4956721.html
Copyright © 2011-2022 走看看