使用OrmLite数据库实现本地的账号登录,注册功能

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);
            }
        }
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值