使用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

相关文章

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函