Ormlite快速上手

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21451721/article/details/52462077

本文基于ormlite-android-4.48.jar

以及ormlite-core-4.48.jar包来介绍功能用法

一、我的实体类

package com.example.test_dudu.bean;

import java.io.Serializable;
import com.j256.ormlite.field.DatabaseField;
//一定要实现serializable接口,便于增删改查
public class Student implements Serializable {

	private static final long serialVersionUID = -5683263669918171030L;

	@DatabaseField(generatedId=true)//generatedId=true意思是ID实现自增,id=true试过但是没有实现自增
	private int stuNO;
	@DatabaseField
	private String name;
	@DatabaseField
	private int age;
	@DatabaseField
	private String sex;
	@DatabaseField
	private double score;
	@DatabaseField
	private String address;

	public int getStuNO() {
		return stuNO;
	}

	public void setStuNO(int stuNO) {
		this.stuNO = stuNO;
	}

	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 getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public double getScore() {
		return score;
	}

	public void setScore(double score) {
		this.score = score;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

}

二、我的DbHelper,其实也就是我的DAO层

package com.example.test_dudu.db;

import java.sql.SQLException;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

import com.example.test_dudu.bean.ClassName;
import com.example.test_dudu.bean.Student;
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 DatabaseHelper extends OrmLiteSqliteOpenHelper {

	private static final String DATABASE_NAME = "ormlite.db";
	private static final int DATABASE_VERSION = 1;
//构造方法声明了数据库名和数据库版本号
	public DatabaseHelper(Context context) {
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
	}

	/**
	 * 创建SQLite数据库
	 */
	@Override
	public void onCreate(SQLiteDatabase sqliteDatabase,
			ConnectionSource connectionSource) {
		try {//建表
			TableUtils.createTable(connectionSource, Student.class);
			TableUtils.createTable(connectionSource, ClassName.class);
		} catch (SQLException e) {
			Log.e(DatabaseHelper.class.getName(), "Unable to create datbases",
					e);
		}
	}

	/**
	 * 更新SQLite数据库
	 */
	@Override
	public void onUpgrade(SQLiteDatabase sqliteDatabase,
			ConnectionSource connectionSource, int oldVer, int newVer) {
		try {
			TableUtils.dropTable(connectionSource, Student.class, true);
			TableUtils.dropTable(connectionSource, ClassName.class, true);
			onCreate(sqliteDatabase, connectionSource);
		} catch (SQLException e) {
			Log.e(DatabaseHelper.class.getName(),
					"Unable to upgrade database from version " + oldVer
							+ " to new " + newVer, e);
		}
	}

	private Dao<Student, Integer> stuDao = null;

	/**
	 * 学生DAO,业务层方法
	 * */
	public Dao<Student, Integer> getStudentDao() throws SQLException {

		if (stuDao == null) {
			stuDao = getDao(Student.class);
		}
		return stuDao;
	}

	private Dao<ClassName, Integer> classDao = null;

	/**
	 * 班级DAO
	 * */
	public Dao<ClassName, Integer> getClassNameDao() throws SQLException {
		if (classDao == null) {
			classDao = getDao(ClassName.class);
		}
		return classDao;
	}

}

三、Activity实现(一):

package com.example.test_dudu.ui;

import java.sql.SQLException;

import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

import com.example.test_dudu.R;
import com.example.test_dudu.bean.Student;
import com.example.test_dudu.db.DatabaseHelper;
import com.j256.ormlite.android.apptools.OrmLiteBaseActivity;
import com.j256.ormlite.dao.Dao;
//借用OrmliteActivity可以快速并直接使用getHelper来获取对应DAO方法
public class MainActivity extends OrmLiteBaseActivity<DatabaseHelper> implements OnClickListener {

	private EditText stuNO;
	private EditText stuName;
	private EditText stuAge;
	private EditText stuSex;
	private EditText stuScore;
	private EditText stuAddress;
    private Button bt_next;
	
	private Student mStudent;
	private Dao<Student, Integer> stuDao;

	private final int MENU_ADD = Menu.FIRST;
	private final int MENU_VIEWALL = Menu.FIRST + 1;
	private final int MENU_EDIT = Menu.FIRST + 2;

	private Bundle mBundle = new Bundle();

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		initializeViews();
	}

	/**
	 * 初始化UI界面
	 */
	private void initializeViews() {
		stuNO = (EditText) findViewById(R.id.stuno);
		stuName = (EditText) findViewById(R.id.name);
		stuAge = (EditText) findViewById(R.id.age);
		stuSex = (EditText) findViewById(R.id.sex);
		stuScore = (EditText) findViewById(R.id.score);
		stuAddress = (EditText) findViewById(R.id.address);

		bt_next=(Button)findViewById(R.id.bt_next);
		bt_next.setOnClickListener(this);
		mBundle = getIntent().getExtras();
		if (mBundle != null && mBundle.getString("action").equals("viewone")) {
			mStudent = (Student) getIntent().getSerializableExtra("entity");
			setStudentUIData(mStudent);
		}

		if (mBundle != null && mBundle.getString("action").equals("edit")) {
			mStudent = (Student) getIntent().getSerializableExtra("entity");
			setStudentUIData(mStudent);
		}
	}

	@Override
	public boolean onPrepareOptionsMenu(Menu menu) {
		if (mBundle != null && mBundle.getString("action").equals("viewone"))
			return false;
		else
			return super.onPrepareOptionsMenu(menu);

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		if (mBundle != null && mBundle.getString("action").equals("edit")) {
			menu.add(1, MENU_EDIT, 0, "保存");
		} else {
			menu.add(0, MENU_ADD, 0, "增加");
			menu.add(0, MENU_VIEWALL, 0, "查看");
		}
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case MENU_ADD:
			try {
				stuDao = getHelper().getStudentDao();
				getStudentData();
				if (mStudent != null) {
					// 创建记录项
					stuDao.create(mStudent);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			break;
		case MENU_VIEWALL:
			Intent intent = new Intent();
			intent.setClass(MainActivity.this, StudentListActivity.class);
			startActivity(intent);
			break;
		case MENU_EDIT:
			try {
				getStudentData();
				stuDao = getHelper().getStudentDao();//getHelper()是继承OrmliteBaseActivity的方法
				if (mStudent != null) {
					// 更新某记录项
					stuDao.update(mStudent);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			break;
		default:
			break;
		}
		return super.onOptionsItemSelected(item);
	}

	/**
	 * 获取界面值(实体信息)
	 */
	private void getStudentData() {
		mStudent = new Student();
		mStudent.setStuNO(Integer.valueOf(stuNO.getText().toString()));
		mStudent.setName(stuName.getText().toString());
		mStudent.setAge(Integer.parseInt(stuAge.getText().toString()));
		mStudent.setSex(stuSex.getText().toString());
		mStudent.setScore(Double.parseDouble(stuScore.getText().toString()));
		mStudent.setAddress(stuAddress.getText().toString());
	}

	/**
	 * 赋值给UI界面
	 * 
	 * @param student
	 */
	private void setStudentUIData(Student student) {
		stuNO.setText(student.getStuNO()+"");
		stuName.setText(student.getName());
		stuAge.setText(String.valueOf(student.getAge()));
		stuSex.setText(student.getSex());
		stuScore.setText(String.valueOf(student.getScore()));
		stuAddress.setText(student.getAddress());
	}

	@Override
	public void onClick(View arg0) {
		// TODO Auto-generated method stub
		Intent in=new Intent(MainActivity.this,ClassActivity.class);
		startActivity(in);
	}
}
四、Activity实现(二)

针对不使用OrmliteBaseActivity情况下的通用方法:

package com.example.test_dudu.ui;

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

import com.example.test_dudu.R;
import com.example.test_dudu.bean.ClassName;
import com.example.test_dudu.bean.Student;
import com.example.test_dudu.db.DatabaseHelper;
import com.example.test_dudu.ui.StudentListActivity.ViewHolder;
import com.j256.ormlite.android.apptools.OrmLiteBaseActivity;
import com.j256.ormlite.dao.Dao;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class ClassActivity extends Activity
		implements OnClickListener, OnItemLongClickListener {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.class_activity);
		initView();
		initData();
		initListener();

	}

	private EditText etname;
	private EditText etnumber;
	private EditText etstunumber;
	private Button btadd;
	private ListView lv;

	private void initView() {
		// TODO Auto-generated method stub
		etname = (EditText) findViewById(R.id.et_classname);
		etnumber = (EditText) findViewById(R.id.et_classnumber);
		etstunumber = (EditText) findViewById(R.id.et_classstunumber);
		btadd = (Button) findViewById(R.id.bt_add);
		lv = (ListView) findViewById(R.id.listView);
	}

	 private DatabaseHelper helper;
	private Dao<ClassName, Integer> cdao;

	private Adapter adapter;
	private void initData() {
		// TODO Auto-generated method stub
		// list = new ArrayList<ClassName>();
		 helper = new DatabaseHelper(getApplicationContext());//通过DAO的构造方法声明Helper并获取我们需要的DAO方法
		try {
			cdao = helper.getClassNameDao();
			list = cdao.queryForAll();//直接获取所有
			if (list == null) {
				list = new ArrayList<ClassName>();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		adapter=new Adapter(list);
		lv.setAdapter(adapter);

	}

	private void initListener() {
		// TODO Auto-generated method stub
		btadd.setOnClickListener(this);
		lv.setOnItemLongClickListener(this);

	}

	private List<ClassName> list;

	@Override
	public void onClick(View view) {
		// TODO Auto-generated method stub
		ClassName cName = new ClassName();
		cName.setClassName(etname.getText().toString());
		cName.setClassNumber(etnumber.getText().toString());
		cName.setClassStuNumber(etstunumber.getText().toString());
		try {
			cdao.create(cName);
			list = cdao.queryForAll();
			adapter=new Adapter(list);
			lv.setAdapter(adapter);
			adapter.notifyDataSetChanged();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	@Override
	public boolean onItemLongClick(AdapterView<?> arg0, View view,
			int position, long arg3) {
		// TODO Auto-generated method stub
		try {
			cdao.delete(list.get(position));
			Toast.makeText(getApplicationContext(), "已删除 " + position,
					Toast.LENGTH_SHORT).show();
			list=cdao.queryForAll();
			adapter=new Adapter(list);
			lv.setAdapter(adapter);
			adapter.notifyDataSetChanged();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return false;
	}
	class Adapter extends BaseAdapter {

		private List<ClassName> list;

		public Adapter(List<ClassName> className) {
			super();
			this.list = className;
		}

		@Override
		public int getCount() {
			return list.size();
		}

		@Override
		public ClassName getItem(int position) {
			return list.get(position);
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			ViewHolder holder;
			if (convertView == null) {
				LayoutInflater mInflater = LayoutInflater.from(getApplicationContext());
				convertView = mInflater.inflate(R.layout.item, null);
				holder = new ViewHolder();
				holder.tvNO = (TextView) convertView.findViewById(R.id.item_tv_classnumber);
				holder.tvName = (TextView) convertView
						.findViewById(R.id.item_tv_classname);
				holder.tvStuNO = (TextView) convertView
						.findViewById(R.id.item_tv_classstunumber);
				convertView.setTag(holder);
			} else {
				holder = (ViewHolder) convertView.getTag();
			}

			ClassName objStu = list.get(position);
			holder.tvNO.setText(objStu.getClassNumber());
			holder.tvName.setText(objStu.getClassName());
			holder.tvStuNO.setText(objStu.getClassStuNumber());

			return convertView;
		}

	}

	static class ViewHolder {
		TextView tvName;
		TextView tvNO;
		TextView tvStuNO;
	}

}

UI就不写了,就是几个EditText和一个ListView。里面用到了查询所有和删除方法,至于其他方法,API里很丰富,上网都可以查到。

很简单很高效很实用的一款Sqlite框架


猜你喜欢

转载自blog.csdn.net/qq_21451721/article/details/52462077