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

相关文章

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi