您的位置:首页 > 数据库

简单的使用ORMLite数据库

2015-11-11 12:13 253 查看


在Android应用开发中使用ORMLite,ORMLite 数据库是面向对象的数据库。它比 SQLite 等数据库更加方便,可以直接使用方法等来操作。比其他很多的数据库操作都要简单。

首先要下载ORMLite的开发jar包,jar资源包下载主页:http://ormlite.com/releases 。此处使用的是如上图所示的两个
jar 包((1)core列表下的jar包;(2)android列表下的jar包。)。下载好后将其放入 libs 目录下。

其中的 @DatabaseTable(tableName = "xxxx") ,@DatabaseField(columnName = xxxx) 等写法都固定。

下面是其简单的使用:

创建 2 个班级,每个班级有几名学生,存入数据库。再遍历其中一个班级的学生(以打印的方式显示出来),效果如下:



班级类: AClass.java :

package com.android.ormlite;

import com.j256.ormlite.dao.ForeignCollection;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.field.ForeignCollectionField;
import com.j256.ormlite.table.DatabaseTable;

@DatabaseTable(tableName = "classes")
public class AClass {

@DatabaseField(canBeNull = false,id = true)
public int Aclass_id;

@DatabaseField(canBeNull = false, defaultValue = "a class")
public String name;

@ForeignCollectionField(eager = false)
public ForeignCollection<User> users = null;

public AClass(){}
}


User 类 ,该类中的 set , get 方法主要是为初始化字段为 private 准备的,但是在这示例中可以省略(本例不为私有,但是如果省略则有代码的改动)
User.java :

package com.android.ormlite;

import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;

@DatabaseTable(tableName = "users")
public class User {

public final static String USER_ID = "user_id";
public final static String NAME = "name";
public final static String AGE = "age";
public final static String GENDER = "gender";

public User() {

}

public User(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}

// @DatabaseField(generatedId = true)
// public int id;

@DatabaseField(id = true, columnName = USER_ID)
public int user_id;

@DatabaseField(columnName = NAME)
public String name;

@DatabaseField(columnName = AGE)
public int age;

@DatabaseField(columnName = GENDER)
public String gender;

@DatabaseField(canBeNull = false, foreign = true, foreignAutoRefresh = true)
public AClass aclass;

public int getUserId() {
return user_id;
}

public void setUserId(int uid) {
this.user_id = uid;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getGender(){
return gender;
}

public void setGender(String gender){
this.gender = gender;
}

@Override
public String toString() {
return "user_id:" + user_id + " 姓名:" + name +
" 年龄:" + age + " 性别:" + gender;
}
}


ORMLiteDatabaseHelper 类的写法基本固定,通过 AClass 和 User 两个类也可以看出

ORMLiteDatabaseHelper.java :

package com.android.ormlite;

import java.sql.SQLException;

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;

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

public class ORMLiteDatabaseHelper extends OrmLiteSqliteOpenHelper {

public static ORMLiteDatabaseHelper mDatabaseHelper;

private Dao<User, Integer> mUserDao = null;
private Dao<AClass, Integer> mClassDao = 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, databaseName, factory, databaseVersion);
}

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 arg1) {
try {

TableUtils.createTableIfNotExists(connectionSource, AClass.class);
TableUtils.createTableIfNotExists(connectionSource, User.class);
} catch (Exception e) {
e.printStackTrace();
}
}

@Override
public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2, int arg3) {

}

/**
* ORMLite查插删改主要通过DAO。
* @return
*/
public Dao<User, Integer> getUserDao() {
if (mUserDao == null) {
try {
mUserDao = getDao(User.class);
} catch (java.sql.SQLException e) {
e.printStackTrace();
}
}

return mUserDao;
}

public Dao<AClass, Integer> getAClassDao(){
if (mClassDao == null) {
try {
mClassDao = getDao(AClass.class);
} catch (SQLException e) {
e.printStackTrace();
}
}

return mClassDao;
}

@Override
public void close() {
super.close();
mUserDao = null;
mClassDao = null;
}

}


MainActivity.java :

package com.android.ormlite;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.dao.ForeignCollection;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

public class MainActivity extends Activity {

private Dao<User, Integer> mUserDao;
private Dao<AClass, Integer> mClassDao;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

ORMLiteDatabaseHelper mDatabaseHelper = ORMLiteDatabaseHelper.getInstance(this);
mUserDao = mDatabaseHelper.getUserDao();
mClassDao = mDatabaseHelper.getAClassDao();

/**
* 创建2个班级
*/
for (int i = 1; i < 3; i++) {

AClass classA = new AClass();
classA.Aclass_id = i;
classA.name = i + "班";

try {

mClassDao.create(classA);

} catch (SQLException e) {
e.printStackTrace();
}
}

/**
* 创建5个user
*/
for (int i = 0; i < 5; i++) {
User user = new User();
user.setUserId(i);
user.setName("name" + i);
// 生成随机测试的年龄。
user.setAge((int) (Math.random() * 22));
user.setGender("男" + i);

try {
// 将新创建的这些 user 所在班级指针指向1班。
user.aclass = mClassDao.queryForId(1);
mUserDao.createOrUpdate(user);
} catch (SQLException e) {
e.printStackTrace();
}
}

}

@Override
protected void onStart() {
super.onStart();

AClass class1 = null;
try {
// 只查询一个班级的 user
class1 = mClassDao.queryForId(1);

ForeignCollection<User> users = class1.users;
for (User u : users) {
Log.d("==============", u + "");
// Toast.makeText(this, u.toString(),
// Toast.LENGTH_SHORT).show();
}

} catch (SQLException e) {
e.printStackTrace();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: