关系数据库 加 AsyncTask

来源:互联网 发布:sql被挂起的解决方法 编辑:程序博客网 时间:2024/06/06 03:27

MainActivity

package com.example.ormlite;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.View;import android.widget.Button;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);finalContext context=this;Button create = (Button) findViewById(R.id.create);create.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {new MyCreateRawDataTask(context).execute();}});Button query = (Button) findViewById(R.id.query);query.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {new MyQueryTask(context).execute();}});}}


MyAppService

package com.example.ormlite;import com.j256.ormlite.dao.Dao;import android.app.Service;import android.content.Intent;import android.os.IBinder;import android.util.Log;public class MyAppService extends Service{privateDao<Student, Integer> mStudentDao;privateDao<AClass, Integer> mClassDao;privateORMLiteDatabaseHelper mDatabaseHelper;@OverridepublicvoidonCreate(){ORMLiteDatabaseHelper mDatabaseHelper = ORMLiteDatabaseHelper.getInstance(this);mStudentDao = mDatabaseHelper.getStudentDao();mClassDao = mDatabaseHelper.getClassDao();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {new Thread(new Runnable(){@Overridepublic void run() {createRawData();}}).start();return super.onStartCommand(intent, flags, startId);}privatevoidcreateRawData(){Log.d("数据库","开始创建数据 ...");for (int j = 0; j < 3; j++) {// 创建1个班级用以演示。AClass acls = new AClass();acls.class_id = j;acls.name = j + "班";try {mClassDao.createIfNotExists(acls);} catch (Exception e) {e.printStackTrace();}// 创建5个学生并且挂接到1班for (int i = 0; i < 5; i++) {Student s = new Student();s.student_id = i;s.age = 18 + i;s.name = "张" + i;s.sex = "男";// 开始,建立外键,挂接到1班s.aclass = acls;try {mStudentDao.createIfNotExists(s);} catch (Exception e) {}}}Log.d("数据库","创建数据完成.");}@Overridepublic IBinder onBind(Intent arg0) {return null;}@OverridepublicvoidonDestroy(){super.onDestroy();mDatabaseHelper.close();}}


MyCreateRawDataTask


package com.example.ormlite;import com.j256.ormlite.dao.Dao;import android.content.Context;import android.os.AsyncTask;import android.util.Log;public class MyCreateRawDataTask extendsAsyncTask{privateContext context;publicMyCreateRawDataTask(Context ctx){this.context=ctx;}@Overrideprotected void onPreExecute() {}@Overrideprotected Object doInBackground(Object... params) {createRawData();return null;}@Overrideprotected void onPostExecute(Object result) {}private void createRawData() {ORMLiteDatabaseHelper mDatabaseHelper = ORMLiteDatabaseHelper.getInstance(context);Dao<Student, Integer> mStudentDao = mDatabaseHelper.getStudentDao();Dao<AClass, Integer> mClassDao = mDatabaseHelper.getClassDao();Log.d("数据库", "开始创建数据 ...");for (int j = 0; j < 3; j++) {// 创建1个班级用以演示。AClass acls = new AClass();acls.class_id = j;acls.name = j + "班";try {mClassDao.createIfNotExists(acls);} catch (Exception e) {e.printStackTrace();}// 创建5个学生并且挂接到1班for (int i = 0; i < 5; i++) {Student s = new Student();s.student_id = i;s.age = 18 + i;s.name = "张" + i;s.sex = "男";// 开始,建立外键,挂接到1班s.aclass = acls;try {mStudentDao.createIfNotExists(s);} catch (Exception e) {}}}Log.d("数据库", "创建数据完成.");//mDatabaseHelper.close();}}


MyQueryTask


package com.example.ormlite;import java.sql.SQLException;import java.util.List;import com.j256.ormlite.dao.Dao;import android.content.Context;import android.os.AsyncTask;import android.util.Log;public class MyQueryTask extendsAsyncTask{privateContext context;publicMyQueryTask(Context ctx){this.context=ctx;}@Overrideprotected void onPreExecute() {}@Overrideprotected Object doInBackground(Object... params) {query();return null;}@Overrideprotected void onPostExecute(Object result) {}private void query() {ORMLiteDatabaseHelper mDatabaseHelper = ORMLiteDatabaseHelper.getInstance(context);Dao<Student, Integer> mStudentDao = mDatabaseHelper.getStudentDao();Dao<AClass, Integer> mClassDao = mDatabaseHelper.getClassDao();try {List<Student> students = mStudentDao.queryForAll();for (Student s : students) {Log.d("学生", s.name + "," + s.age + ",归属于:" + s.aclass.name);}} catch (SQLException e) {e.printStackTrace();}try {List<AClass> classes = mClassDao.queryForAll();for (AClass c : classes) {Log.d("班级", c.name + "," + "," + c.class_id + ",学生个数:"+ c.students.size());}} catch (SQLException e) {e.printStackTrace();}//mDatabaseHelper.close();}}


ORMLiteDatabaseHelper


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 Dao<Student, Integer> mStudentDao = 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;}@Overridepublic void onCreate(SQLiteDatabase arg0, ConnectionSource connectionSource) {Log.d(this.getClass().getName(), "ORMLite数据库 -> onCreate");try {TableUtils.createTableIfNotExists(connectionSource, AClass.class); TableUtils.createTableIfNotExists(connectionSource, Student.class);} catch (Exception e) {e.printStackTrace();}}@Overridepublic 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> getStudentDao() {if (mStudentDao == null) {try {mStudentDao = getDao(Student.class);} catch (SQLException e) {e.printStackTrace();}}return mStudentDao;}@Overridepublic void close() {super.close();mStudentDao = null;mClassDao = null;}}




0 0
原创粉丝点击