ORMLiteDatabase的简单使用并且与其他的表相互联系

1、下载jar

具体到Android,需要在 http://ormlite.com/releases 页面下载两个jar 包(本文基于ORMLite的版本是:ormlite 4.49-SNAPSHOT):
(1)core列表下的jar包;
(2)android列表下的jar包。
如图所示:

 

 

将上面的两个jar包下载后放到Android工程项目中的libs包中,如图所示:

 

以上完成后,ORMLite开发环境搭建就完成了,接下来就可以使用了。

 

2、代码:

表student.java和AClass.java

package com.zzw.ormlitedatabasetest;

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

@DatabaseTable(tableName = "Student")
public class Student {

    @DatabaseField(id = true, columnName = "Student_id")
    public int Student_id;
    @DatabaseField(columnName = "name")
    public String name;
    @DatabaseField(columnName = "sex")
    public String sex;
    @DatabaseField(columnName = "age")
    public int age;
    @DatabaseField(foreign = true, foreignAutoRefresh = true)
    public AClass aClass;

    public Student() {

    }

    public Student(String name, String sex, int age) {
        super();
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student [Student_id=" + Student_id + ", name=" + name + ", sex=" + sex + ", age=" + age + ",className="
                + aClass.name + "]";
    }

}

Student
package com.zzw.ormlitedatabasetest;

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

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

    @DatabaseField(id = true, columnName = "classess_id")
    public int classess_id;
    @DatabaseField(dataType = DataType.STRING)
    public String name;
    @ForeignCollectionField(eager = false)
    public ForeignCollection<Student> students = null;

    public AClass() {
        super();
    }

    public AClass(int classess_id, String name, ForeignCollection<Student> students) {
        super();
        this.classess_id = classess_id;
        this.name = name;
        this.students = students;
    }

}

AClass

ORMLite数据库管理工具类ORMLiteDatabaseHelper.java:

package com.zzw.ormlitedatabasetest;

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;
import android.util.Log;

public class OrmLiteDatabaseHelper extends OrmLiteSqliteOpenHelper {
    private static final String TAG = "OrmLiteDatabaseHelper";

    public static OrmLiteDatabaseHelper mDatabaseHelper = null;

    public Dao<Student, Integer> mStudentDao = null;
    public Dao<AClass, Integer> mAClassDao = null;

    public static String database_NAME = "school.db";
    public 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);
        }
        Log.d(TAG, "数据库school.db创建成功");
        return mDatabaseHelper;
    }

    @Override
    public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
        try {
            TableUtils.createTableIfNotExists(arg1, AClass.class);
            Log.e(TAG, "AClass表在School.db中被创建");
            TableUtils.createTableIfNotExists(arg1, Student.class);
            Log.e(TAG, "Student表在School.db中被创建");
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

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

    }

    public Dao<Student, Integer> getStudentDao() {
        if (mStudentDao == null) {
            try {
                mStudentDao = getDao(Student.class);
                Log.e(TAG, "得到Student的Dao");
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return mStudentDao;
    }

    public Dao<AClass, Integer> getAClassDao() {
        if (mAClassDao == null) {
            try {
                mAClassDao = getDao(AClass.class);
                Log.e(TAG, "得到AClass的Dao");
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return mAClassDao;
    }

    @Override
    public void close() {
        super.close();
        if (mAClassDao != null) {
            mAClassDao = null;
        }
        if (mStudentDao != null) {
            mStudentDao = null;
        }
    }
}

MainActivity:


package com.zzw.ormlitedatabasetest;

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

import com.j256.ormlite.dao.Dao;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

    private static final String TAG = "MainActivity";

    private Dao<AClass, Integer> mAClassDao = null;
    private Dao<Student, Integer> mStudentDao = null;

    AClass aClass1, aClass2, aClass3, aClass4, aClass5;

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

        OrmLiteDatabaseHelper mOrmLiteDatabaseHelper = OrmLiteDatabaseHelper.getInstance(this);

        mAClassDao = mOrmLiteDatabaseHelper.getAClassDao();
        mStudentDao = mOrmLiteDatabaseHelper.getStudentDao();

    }

    @Override
    protected void onStart() {
        Log.d(TAG, ">>>>>>>>>>>>");
        super.onStart();
        int AClasses_count = createAClasses();
        if (AClasses_count == 5) {
            try {
                aClass1 = mAClassDao.queryForId(1);
                aClass2 = mAClassDao.queryForId(2);
                aClass3 = mAClassDao.queryForId(3);
                aClass4 = mAClassDao.queryForId(4);
                aClass5 = mAClassDao.queryForId(5);

                createStudents();

            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            Toast.makeText(this, "班级创建错误", 0).show();
        }
        queryAllStudents();
    }

    private void createStudents() {
        Log.d(TAG, "学生创建开始------>");
        Student student = new Student();
        for (int i = 1; i <= 20; i++) {
            student.Student_id = i;
            student.age = (int) (Math.random() * 100);
            if (i % 2 == 0) {
                student.sex = "男";
            } else {
                student.sex = "女";
            }
            if (i > 0 && i <= 4) {
                student.aClass = aClass1;
                student.name = "陶" + i;
            } else if (i > 4 && i <= 8) {
                student.aClass = aClass2;
                student.name = "李" + i;
            } else if (i > 8 && i <= 12) {
                student.aClass = aClass3;
                student.name = "阿" + i;
            } else if (i > 12 && i <= 16) {
                student.aClass = aClass4;
                student.name = "曾" + i;
            } else {
                student.aClass = aClass5;
                student.name = "蒋" + i;
            }

            try {
                mStudentDao.createIfNotExists(student);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        Log.d(TAG, "学生创建成功------>");
    }

    private int createAClasses() {
        Log.d(TAG, "班级创建开始------>");
        AClass aClass = new AClass();
        int AClasses_count = 0;
        for (int i = 1; i <= 5; i++) {
            aClass.classess_id = i;
            aClass.name = "高三" + i + "班";
            try {
                mAClassDao.createIfNotExists(aClass);
                AClasses_count++;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        Log.d(TAG, "班级创建成功------>");
        return AClasses_count;
    }

    private void queryAllStudents() {
        Log.d(TAG, "查询全部学生开始------>>>>");
        try {
            List<Student> students = mStudentDao.queryForAll();
            if (students != null && students.size() > 0) {
                for (Student student : students) {
                    Log.i(TAG, student.toString());
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        Log.d(TAG, "查询全部学生完毕------>>>>");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mAClassDao != null) {
            mAClassDao = null;
        }
        if (mStudentDao != null) {
            mStudentDao = null;
        }
        Log.d(TAG, "<<<<<<<<<<<");
    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值