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

2024-01-20 21:38

本文主要是介绍使用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);}@Overridepublic void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {//完成对数据库的创建和表的建立try {TableUtils.createTable(connectionSource, User.class);} catch (SQLException e) {e.printStackTrace();}}@Overridepublic 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 keyprivate int id;@DatabaseField(columnName = "name")private String name;@DatabaseField(columnName = "password")//列名private String password;public User(){}@Overridepublic 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){//获取userDaohelper = 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改为新的namebuilder.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){//删除集合中的所有usertry {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;@Overrideprotected 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();}@Overridepublic 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;@Overrideprotected 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);}@Overridepublic 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);}}}
}

这篇关于使用OrmLite数据库实现本地的账号登录,注册功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/627422

相关文章

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示