OrmLite是基于SQLite的封装的。实现方法是通过对java bean类进行注解的方式,操作简单许多。
首先想在as中使用这个OrmLite类,需要下载两个jar包,至于jar包的用途,可以看看官方文档,这里我将jar包粘上去了,需要使用的可以进行下载。
ormlite架包,点击下载
操作步骤
1、将两个架包拷贝到libs包中,最简单的引用进as中就是点击:
即可。
#
2、新建一个DataBaseHelper类
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
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 java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import table.User;
/**
* Created by 80926 on 2016/9/25.
*/
public class DataBaseHelper extends OrmLiteSqliteOpenHelper{
private final static String DATABASE_NAME = "mydatabase.db";//数据库名称
private final static int DATABASE_VERSION = 1;//数据库版本号
private Map<String,Dao> maps = new HashMap<>();
//使用单例模式进行其他的进行访问
private static DataBaseHelper instance;
public static synchronized DataBaseHelper getInstance(Context context){
if (instance == null){
synchronized (DataBaseHelper.class){
if (instance == null){
instance = new DataBaseHelper(context);
}
}
}
return instance;
}
public synchronized Dao getDao(Class clz) throws SQLException{
Dao dao = null;
String className = clz.getSimpleName();
if (maps.containsKey(className)){
dao = maps.get(className);
}else {
dao = super.getDao(clz);
maps.put(className,dao);
}
return dao;
}
//关闭所有操作
public void close(){
super.close();
for(String key : maps.keySet()){
Dao dao = maps.get(key);
dao = null;
}
}
public DataBaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
//完成对数据库的创建和表的建立
try {
TableUtils.createTable(connectionSource, User.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) {
try {
TableUtils.dropTable(connectionSource,User.class,true);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2、因为OrmLite数据库的建表示在bean类上的,所以新建一个UesrBean类
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
/**
* Created by 80926 on 2016/9/25.
*/
@DatabaseTable(tableName = "user_info")//数据库表名字
public class User {
@DatabaseField(generatedId = true)//数据库的主键--primary key
private int id;
@DatabaseField(columnName = "name")
private String name;
@DatabaseField(columnName = "password")//列名
private String password;
public User(){
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", desc='" + password + '\'' +
'}';
}
public User(String name, String password) {
this.name = name;
this.password = password;
}
public User(int id, String name, String desc) {
this.id = id;
this.name = name;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
3、新建一个UserDao类,用于封装一些增删改查操作
import android.content.Context;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.stmt.QueryBuilder;
import com.j256.ormlite.stmt.UpdateBuilder;
import com.j256.ormlite.stmt.Where;
import java.sql.SQLException;
import java.util.List;
import db.DataBaseHelper;
import table.User;
/**
* Created by 80926 on 2016/9/25.
*/
public class UserDao {
private Context context;
private Dao<User,Integer> userDao;
private DataBaseHelper helper;
public UserDao(Context context){//获取userDao
helper = DataBaseHelper.getInstance(context);
try {
userDao = helper.getDao(User.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void createUser(User user){//创建user表
try {
userDao.create(user);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void updateUser(User user){
try {
userDao.update(user);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* @param user
* @param id
*/
public void updateUserById(User user,Integer id){//通过user的id进行更新
try {
userDao.updateId(user,id);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void updateUserByBuilder(User user,String name,String id,Integer selectedId){
UpdateBuilder builder = userDao.updateBuilder();
try {
builder.updateColumnValue(name,user.getName()).where().eq(id,selectedId);//将某一条的id(或者其他列中的属性)的name改为新的name
builder.update();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void deleteUser(User user) {//删除一整条数据
try {
userDao.delete(user);
} catch (Exception e) {
e.printStackTrace();
}
}
public void deleteMuUser(List<User> users){//删除集合中的所有user
try {
userDao.delete(users);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void deleteUserById(List<Integer> ids){//删除list集合中所有的id的条目
try {
userDao.deleteIds(ids);
} catch (SQLException e) {
e.printStackTrace();
}
}
//获取所有数据
public List<User> listAll(){
try {
return userDao.queryForAll();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
//查询数据库
public List<User> queryBuilder1(String name,String password){
List<User> list = null;
try {
list = userDao.queryBuilder().where().eq("name",name).and().eq("password",password).query();
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
//查询,或的关系,两者选一即可
public List<User> queryBuilder2(String name,String userName1,String userName2){
List<User> list = null;
QueryBuilder<User, Integer> queryBuilder = userDao.queryBuilder();
Where<User, Integer> where = queryBuilder.where();
try {
list = where.and(where.in(name,userName1,userName2),where.eq(name,userName2)).query();
}catch (SQLException e){
e.printStackTrace();
}
return list;
}
}
4、LoginActivity
public class LoginActivity extends Activity implements View.OnClickListener {
private EditText etName;
private EditText etPassword;
private Button button;
private UserDao userDao;
private List<User> list;
private TextView textViewWangji;
private TextView textViewZhuce;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
etName = (EditText) findViewById(R.id.etName);
etPassword = (EditText) findViewById(R.id.etPassword);
button = (Button) findViewById(R.id.login);
textViewWangji = (TextView) findViewById(R.id.text_wangji);
textViewZhuce = (TextView) findViewById(R.id.text_zhuce);
textViewWangji.setOnClickListener(this);
textViewZhuce.setOnClickListener(this);
button.setOnClickListener(this);
userDao = new UserDao(this);
list = userDao.listAll();
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.login:
String name = etName.getText().toString();
String password = etPassword.getText().toString();
if (name.equalsIgnoreCase("")||password.equalsIgnoreCase("")){
Toast.makeText(LoginActivity.this, "不能为空!", Toast.LENGTH_SHORT).show();
}else {
for(int i = 0 ; i < list.size();i++){
User user = list.get(i);
if (user.getName().equalsIgnoreCase(name)&&user.getPassword().equalsIgnoreCase(password)){
startActivity(new Intent(LoginActivity.this,OrmLiteActivity.class));
}else if(user.getName().equalsIgnoreCase(name)&&!user.getPassword().equalsIgnoreCase(password)){
Toast.makeText(LoginActivity.this, "密码错误,请重新输入", Toast.LENGTH_SHORT).show();
etPassword.setText("");
}else if(!user.getName().equalsIgnoreCase(name)&&user.getPassword().equalsIgnoreCase(password)){
Toast.makeText(LoginActivity.this, "账户错误,请重新输入", Toast.LENGTH_SHORT).show();
etName.setText("");
}
}
}
break;
case R.id.text_wangji:
startActivity(new Intent(this,GenggaiActivity.class));
break;
case R.id.text_zhuce:
startActivity(new Intent(this,ZhuceActivity.class));
break;
}
}
}
5、注册界面
public class ZhuceActivity extends Activity implements View.OnClickListener {
private EditText etName;
private EditText etPW;
private EditText etRPW;
private Button button;
private UserDao userDao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zhuce);
etName = (EditText) findViewById(R.id.et_userName);
etPW = (EditText) findViewById(R.id.et_userPassword);
etRPW = (EditText) findViewById(R.id.et_userRePassword);
button = (Button) findViewById(R.id.btn_zhuce);
button.setOnClickListener(this);
userDao = new UserDao(this);
}
@Override
public void onClick(View v) {
String name = etName.getText().toString();
String etPw = etPW.getText().toString();
String etRpw = etRPW.getText().toString();
if(name.equalsIgnoreCase("")||etPw.equalsIgnoreCase("")||etRpw.equalsIgnoreCase("")){
Toast.makeText(ZhuceActivity.this, "用户密码和账户不能为空", Toast.LENGTH_SHORT).show();
etName.setText("");
etPW.setText("");
etRPW.setText("");
}else {
if(!etPw.equalsIgnoreCase(etRpw)){
Toast.makeText(ZhuceActivity.this, "两次密码不一致", Toast.LENGTH_SHORT).show();
etPW.setText("");
etRPW.setText("");
}else {
User user = new User();
user.setName(name);
user.setPassword(etPw);
userDao.createUser(user);
Toast.makeText(ZhuceActivity.this, "注册成功,请登录", Toast.LENGTH_SHORT).show();
Intent intent = getBaseContext().getPackageManager()
.getLaunchIntentForPackage(getBaseContext().getPackageName());
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
}
}
}