package com.example.ormlite;
import java.sql.SQLException;
import java.util.List;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.dao.ForeignCollection;
import com.j256.ormlite.field.ForeignCollectionField;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
private Dao<Student,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.getClassDao();
//创建一个班
for (int j = 0; j < 3; j++) {
AClass ac1= new AClass();
ac1.class_id = j;
ac1.name=j+"班";
try {
mClassDao.createIfNotExists(ac1);
} catch (Exception e1) {
e1.printStackTrace();
}
//创建5个学生并且挂接到1班
int start=j*5;
for (int i = j*3; i < j*3+5; i++) {
Student user = new Student();
user.student_id = i;
user.name = "周"+i;
user.age = 18+i;
user.sex = "男";
//开始挂接到1班
user.aclass = ac1;
try {
mUserDao.createOrUpdate(user);
} catch (SQLException e) {
}
}
}
//输出结果
try {
AClass cls1 = mClassDao.queryForId(1);
ForeignCollection<Student> students = cls1.student;
for (Student user : students) {
Log.d("学生", user.name + "," + user.age + "," + user.aclass.name+","+user.sex);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/*private void queryAllData() {
Log.d("查询结果,开始", "********************");
List<Student> users = null;
// 全局查询
try {
users = mUserDao.queryForAll();
} catch (Exception e) {
e.printStackTrace();
}
for (Student user : users) {
Log.d("数据库数据", user.student_id + "," + user.name + "," + user.age
+ "," + user.sex);
}
Log.d("查询结果,结束", "******************");
}
}*/
package com.example.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 final static String DataBase_NAME = "ormlite.db";
private final static int DataBase_VERSION = 1;
private Dao<Student, Integer> mStudentDao = null;
private Dao<AClass, Integer> mClassDao = null;
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 connectionSource) {
Log.d(this.getClass().getName(), "ORMLite数据库-> onCreate");
try {
TableUtils.createTableIfNotExists(connectionSource, Student.class);
TableUtils.createTableIfNotExists(connectionSource, AClass.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase database, ConnectionSource arg1, int arg2,
int arg3) {
}
public Dao<AClass, Integer> getClassDao() {
if (mClassDao == null) {
try {
mClassDao = getDao(AClass.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
return mClassDao;
}
public Dao<Student,Integer>getUserDao(){
if(mStudentDao == null){
try {
mStudentDao = getDao(Student.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
return mStudentDao;
}
@Override
public void close() {
super.close();
mClassDao = null;
mStudentDao = null;
}
}
package com.example.ormlite;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
@DatabaseTable(tableName = "users")
public class Student {
public Student(){
}
@DatabaseField(id = true,columnName = "student_id")
public int student_id;
@DatabaseField(columnName = "name")
public String name;
@DatabaseField(columnName = "age")
public int age;
@DatabaseField(columnName = "sex")
public String sex;
@DatabaseField(foreign = true,foreignAutoRefresh = true)
public AClass aclass;
}
package com.example.ormlite;
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 = "classes")
public class AClass {
@DatabaseField(id = true)
public int class_id;
@DatabaseField(dataType = DataType.STRING)
public String name;
@ForeignCollectionField(eager = false)
public ForeignCollection<Student> student = null;
public AClass(){
}
}