关系数据库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数据库管理工具类:
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.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 ORMLiteDatabaseHelper extends OrmLiteSqliteOpenHelper { private static ORMLiteDatabaseHelper mDatabaseHelper = null;
private Dao<User, Integer> mUserDao = null; private final static String DataBase_NAME = "ormlite.db";
private final static int DataBase_VERSION = 1; public ORMLiteDatabaseHelper(Context context, String databaseName,
CursorFactory factory, int databaseVersion) {
super(context, DataBase_NAME, factory, DataBase_VERSION);
} public static ORMLiteDatabaseHelper getInstance(Context context) {
if (mDatabaseHelper == null) {
mDatabaseHelper = new ORMLiteDatabaseHelper(context, DataBase_NAME,
null, DataBase_VERSION);
} return mDatabaseHelper;
} @Override
public void onCreate(SQLiteDatabase arg0, ConnectionSource connectionSource) { Log.d(this.getClass().getName(), "ORMLite数据库 -> onCreate"); try {
TableUtils.createTableIfNotExists(connectionSource, User.class);
} catch (Exception e) {
e.printStackTrace();
}
} @Override
public void onUpgrade(SQLiteDatabase database, ConnectionSource arg1,
int arg2, int arg3) { Log.i(this.getClass().getName(), "数据库 -> onUpgrade"); try {
// 删除旧的数据库表。
TableUtils.dropTable(connectionSource, User.class, true); // 重新创建新版的数据库。
onCreate(database, connectionSource);
} catch (SQLException e) {
e.printStackTrace();
}
} /**
* 每一个数据库中的表,要有一个获得Dao的方法。 可以使用一种更通用的模板方法如:
*
* public Dao<Class, Integer> getORMLiteDao(Class cls) throws SQLException {
* if (dao == null) { dao = getDao(cls); }
*
* return dao; }
*/
public Dao<User, Integer> getUserDao() {
if (mUserDao == null) {
try {
mUserDao = getDao(User.class);
} catch (java.sql.SQLException e) {
e.printStackTrace();
}
} return mUserDao;
} @Override
public void close() {
super.close();
mUserDao = null;
}
}
最后在mainactivity中操作添加数据:
import java.sql.SQLException;
import java.util.List;
import java.util.Random; import com.j256.ormlite.dao.Dao; import zhangphil.ormlitetest.database.ORMLiteDatabaseHelper;
import zhangphil.ormlitetest.database.User;
import android.support.v7.app.ActionBarActivity;
import android.widget.Toast;
import android.os.Bundle; public class MainActivity extends ActionBarActivity { private Dao<User, Integer> mUserDao; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); ORMLiteDatabaseHelper mDatabaseHelper = ORMLiteDatabaseHelper
.getInstance(this);
mUserDao = mDatabaseHelper.getUserDao(); Random rand = new Random();
for (int i = 0; i < 3; i++) {
User user = new User();
user.setUserId(i);
user.setName("name" + i);
// 生成随机测试的年龄。
user.setAge(rand.nextInt(100)); try {
mUserDao.createOrUpdate(user);
} catch (SQLException e) {
e.printStackTrace();
}
}
} @Override
public void onStart() {
super.onStart(); // 全局查询
try {
List<User> users = mUserDao.queryForAll(); for (User u : users) {
Toast.makeText(this, u.toString(), Toast.LENGTH_SHORT).show();
}
} catch (SQLException e) {
e.printStackTrace();
} // 条件查询QueryBuilder
// 假设我们给定一个用户的id=1
int uid = 1;
try {
List<User> users = mUserDao.queryBuilder().where()
.eq(User.USER_ID, uid).query(); for (User u : users) {
Toast.makeText(this, "查询结果 : " + u.toString(),
Toast.LENGTH_SHORT).show();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
关系数据库ORMlite的用法;的更多相关文章
- AsyncTask 异步任务 的用法(并且使用ORMlite关系数据库);
package com.lixu.asynctask; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.tab ...
- Android ORMLite 框架的入门用法
大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app:本篇博客将详细介绍ORMLite的简易用法. 下面开始介 ...
- Android数据库框架-----ORMLite 的基本用法
ORMLite 是一款非要流行的Android平台上的数据库框架,性能优秀,代码简洁: 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完善:4.文档全面. 缺点:1.基于反射,效率较低(本 ...
- 5 -- Hibernate的基本用法 --1 1 对象/关系数据库映射(ORM)
ORM的全称是Object/Relation Mapping ,即对象/关系数据库映射.ORM可理解成一种规范,它概述了这类框架的基本特征:完成面向对象的编程语言到关系数据库的映射.当ORM框架完成映 ...
- Android 数据库框架OrmLite的使用(一)
在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...
- mongodb-java-driver基本用法
1.先下载mongodb-java-driver 目前最新版本是2.9.3 2.下面是基本的CRUD示例代码: package com.cnblogs.yjmyzz.cache.test; impor ...
- Android—Ormlite框架简单的操作数据库
大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app:本篇博客将详细介绍ORMLite的简易用法. 下面开始介 ...
- [ 转]Android快速开发–使用ORMLite操作数据库
OrmLite是一个数据库操作辅助的开源框架,主要面向Java语言.在Android面向数据库开发中,是一个比较流行的开源框架,方便操作而且功能强大,今天来学习一下,最近的项目中也有所涉及,写个博客来 ...
- 数据库 ORM框架 ORMLite
几个ORM框架的比较 先介绍一下ORM的概念,以前也一直听说,不过没详细了解啥意思.其全称叫做对象关系映射(Object Relation Mapping),是一种程序设计技术,用于实现面向对象编程语 ...
随机推荐
- MIMO雷达比幅单脉冲测角精度分析(系统工程与电子技术)
MIMO雷达比幅单脉冲测角精度分析(系统工程与电子技术)
- 3D CNN for Video Processing
3D CNN for Video Processing Updated on 2018-08-06 19:53:57 本文主要是总结下当前流行的处理 Video 信息的深度神经网络的处理方法. 参考文 ...
- P2865 【[USACO06NOV]路障Roadblocks】(次短路)
传送门 算法Dijkstra要求次短路 那么在不考虑重复走一条边的情况下 肯定是把最短路中的一段改成另一段 至少要换另一条边到路径里所以可以枚举所有不属于最短路的每条边(a,b) 那么dis(1,a) ...
- Springboot 学习笔记 之 Day 1
SpringBoot快速入门 https://spring.io/ 1. SpringBoot简介Spring Boot来简化Spring应用开发,约定大于配置,去繁从简,just run就能创建一个 ...
- 怎么彻底删除2345的各种顽固Process
清晨打开电脑,都是2345的不良新闻,心情不美美哒 2345如何卸载? “C:\Windows\System32\drivers”目录删除Mslmedia.sys 开始-运行-cmd输入“sc del ...
- CentOS下的Autoconf和AutoMake(完善篇) 3
在<实践篇>之后,由于需求不断修正,所以这篇是针对<实践篇>的一些完善.(以后内容会不定期增加完善) 1.不想链接到math的动态库,想连接到静态库①使用命令ldd ./mys ...
- js插件---Bootstrap 树控件
js插件---Bootstrap 树控件 一.总结 一句话总结:可以直接用gojs,或者搜索js,jquery的树控件,或者bootstrap树控件,一大堆 gojs 二.JS组件系列——Bootst ...
- Interactive Reporting , SQL*Net not loaded successfully 问题的解决。
.bashrc 什么的,早就把 TNS_ADMIN , 和 LD_LIBRARY_PATH 加进去了,可就是不好使. 终极方法还是在 workspace 的 R&A -> Service ...
- yii CComponent组件 实例说明1
yii CComponent组件 实例说明 yii中的module,controller都是CComponent的子类,可以说yii的架构基石就是依托在CCompnent基础上的,这里研究下CComp ...
- initctl 创建自己的JOB
我们的项目需要一个启动一个外部的Jetty server.发现每次kill了这个jetty的进程后,系统会自动启动一个jetty.追查下去发现,原来是在/etc/init.d/jetty 脚本的sta ...