第一步、创建类和在libs加入ormlite的jar包
如图:
一点要记住在AndroidManifest.xml中进行注册
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kiaoke.ormliteservice"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".PangService"/>
</application>
</manifest>
创建类的内容
MainActivity类
package com.kiaoke.ormliteservice;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//意图,跳转到service
Intent service=new Intent(this, PangService.class);
startService(service);
}
}
PangCreateORMLite类
package com.kiaoke.ormliteservice;
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 PangCreateORMLite extends OrmLiteSqliteOpenHelper {
private static PangCreateORMLite createORM = null;
private Dao<Student, Integer> studentDao = null;
private Dao<XiaoClass, Integer> xiaoClassDao = null;
public PangCreateORMLite(Context context, String databaseName,
CursorFactory factory, int databaseVersion) {
super(context, "person.db", factory, 1);
// TODO Auto-generated constructor stub
}
// 获取数据库对象
public static PangCreateORMLite createORMLite(Context context) {
if (createORM == null) {
createORM = new PangCreateORMLite(context, null, null, -1);
}
return createORM;
}
// 获取表studentDao对象
public Dao<Student, Integer> getStudentDao() {
if (studentDao == null) {
try {
studentDao = getDao(Student.class);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return studentDao;
}
// 获取表xiaoClassDao对象
public Dao<XiaoClass, Integer> getXiaoClassDao() {
if (xiaoClassDao == null) {
try {
xiaoClassDao = getDao(XiaoClass.class);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return xiaoClassDao;
}
@Override
public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
// TODO Auto-generated method stub
Log.d(this.getClass().getName(), "ORMLite数据库 -> onCreate");
try {
// 固定写发,添加一个表就添加一个对应的
TableUtils.createTableIfNotExists(connectionSource, Student.class);
TableUtils
.createTableIfNotExists(connectionSource, XiaoClass.class);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
}
PangService类
package com.kiaoke.ormliteservice;
import java.sql.SQLException;
import com.j256.ormlite.dao.Dao;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
//注意,一定要在AndroidManifest.xml进行注册
//注册方法为:<service android:name="com.kiaoke.ormliteservice.PangService"/>
public class PangService extends Service {
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
}
// 在onStartCommand中不能直接进行耗时操作的处理,不然会阻塞主线程,
// 应开一个子线程,在里面操作
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
createData();
}
}).start();
return super.onStartCommand(intent, flags, startId);
}
// 获取初始数据
public boolean createData() {
boolean temp = false;
// 获取数据库对象
PangCreateORMLite createORM = PangCreateORMLite.createORMLite(this);
// 获取Dao对象
Dao<Student, Integer> studentDao = createORM.getStudentDao();
Dao<XiaoClass, Integer> xiaoClassDao = createORM.getXiaoClassDao();
for (int i = 0; i < 5; i++) {
XiaoClass xiaoClass = new XiaoClass();
xiaoClass.xiaoClass_id = i;
xiaoClass.name = i + "班";
try {
xiaoClassDao.createIfNotExists(xiaoClass);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (int j = 0; j < 5; j++) {
Student student = new Student();
student.student_id = j;
student.name = "天天" + j;
student.age = 10 + j;
student.StudentXiaoClass = xiaoClass;
try {
studentDao.createIfNotExists(student);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
temp = true;
return temp;
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
Student类
package com.kiaoke.ormliteservice;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
@DatabaseTable(tableName="student")
public class Student {
public Student() {
super();
// TODO Auto-generated constructor stub
}
//generatedId=true表示主id,不需要对其操作,omrlite对其进行操作
@DatabaseField(generatedId=true)
public long id;
@DatabaseField(columnName="student_id")
public int student_id;
@DatabaseField(columnName="name")
public String name;
@DatabaseField(columnName="age")
public int age;
//挂接数据的操作。挂接需要它
@DatabaseField(foreign = true, foreignAutoRefresh = true)
public XiaoClass StudentXiaoClass;
}
XiaoClass类
package com.kiaoke.ormliteservice;
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="xiaoclass")
public class XiaoClass {
public XiaoClass() {
super();
// TODO Auto-generated constructor stub
}
@DatabaseField(id=true)
public int xiaoClass_id;
@DatabaseField(dataType=DataType.STRING)
public String name;
//获取student的一个集合
@ForeignCollectionField(eager = false)
public ForeignCollection<Student> xiaoClassStudents = null;
}