Java数据库小项目01--实现用户登录注册
先实现数据库和数据表,检测正常后再做其他的
CREATE TABLE users(
username VARCHAR(20) NOT NULL,
PASSWORD VARCHAR(10) NOT NULL);
INSERT INTO users VALUES
('a',''),('b','');

具体实现
有两个类,一个用来操作数据库一个用来实现用户界面的选择
数据库操作类的实现
package Test; import java.sql.SQLException; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler; //这个类是操作数据库的类
// 实现两个方法用于用户注册和登录 public class UsersDao {
//创建QueryRunner类对象,在构造方法中传递工具类获得数据源
private QueryRunner qr =new QueryRunner(JDBCUtils.getDataSource()); //创建登录功能接收用户输入的用户名和密码,并进行判断
//当结果集为0时说明没有查到相应的用户名和密码,返回false
public boolean login(String username,String password) throws SQLException{
String sql="select * from users where username=? and password=?";
Object[] params={username,password};
//调用quer的query方法查询数据表
Object[] res=qr.query(sql, new ArrayHandler(),params);
//对查询到的结果判断
if(res.length==0)
return false;
return true;
} //判断用户名是否被注册了
public boolean register(String username,String password){
try{
String sql ="select username from users where username=?";
//查询结果集,ScalarHander表示一个结果集
String user=qr.query(sql, new ScalarHandler<String>(), username);
//如果用户名存在,user里存的为用户名,若不存在则为null
if(user!=null)
return false;
//不需要if else语句return直接返回了,下面语句不执行
sql="insert into users (username,PASSWORD) values (?,?)";
//创建数组对象保存占位符的实际参数
Object[] params={username,password};
//调用qr对象方法update写入数据
qr.update(sql,params);
return true;
}catch(SQLException e){
throw new RuntimeException("注册失败!");
}
}
}
用户界面操作类的实现
package Test; import java.sql.SQLException;
import java.util.Scanner; //用户操作界面--提供菜单选择不同功能
public class UserOperator {
private static Scanner sc=new Scanner(System.in);
//private String username;
public static void main(String[] args) throws SQLException {
//和局部变量的定义不同
UsersDao dao=new UsersDao();
//调用选择方法,获取用户选择内容
String number=chooser(); //对选择序号判断
switch(number){
case "1":
System.out.println("选择的是登录,请输入用户名:");
//username在case 1中被定义的,能够作用在case 2,不明白为什么?在C语言里是明显不行的
String username=sc.next();
System.out.println("请输入密码:");
String password=sc.next();
//调用userdao类的login方法,传递用户名和密码
boolean b=dao.login(username,password);
if(b)
System.out.println("登录成功!");
else
System.out.println("登录失败,请检查您的用户名和密码!");
break;
case "2":
System.out.println("选择的是注册,请输入用户名:");
username=sc.next();
System.out.println("请输入密码:");
password=sc.next();
b=dao.register(username,password);
if(b)
System.out.println("注册成功!");
else
System.out.println("注册失败,请尝试"+username+"123");
break;
case "3":
System.exit(0);
default:
System.out.println("没有此功能!");
}
} //功能选择菜单方法
public static String chooser(){
System.out.println("欢迎光临!");
System.out.println("请选择功能菜单:");
System.out.println("1 登录 2 注册 3 退出");
return sc.next();
}
}
注:在用户界面操作类中有一处不理解关于switch中usernam,password的定义,当一开始直接选择2时明显是没有被定义为什么还能正常使用?此处不明白,在传统的c、c++语言语法中这样做肯定是会出错的。后面可能理解可能是java语言中所有case的命名空间是一样的,还要在一处定义即可,下面这个代码能够正常运行:
public class Main{
public static void main(String[] args) {
int n=2;
int m=0;
switch(n){
case 1: int a=1;break;
case 2: a=2;m=a;break;
}
System.out.println(m);
}
}
但这样定义虽然能够运行但是程序阅读起来可能会引起误解,因此不提倡这样定义。
Java数据库小项目01--实现用户登录注册的更多相关文章
- Java数据库小项目00---基础知识
目录 JDBC的简单使用 向JDBC注入攻击 防止注入攻击 自建JDBC工具类 自建工具类优化--使用配置文件 使用数据库连接池优化工具类 JDBC的简单使用 package Test; import ...
- Java数据库小项目02--管家婆项目
目录 项目要求 开发环境搭建 工具类JDBCUtils 创建管家婆数据表 项目分层 MainApp层 MainView层 ZhangWuController层 ZhangWuService层 Zhan ...
- android安卓Sqlite数据库实现用户登录注册
看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...
- Java Spring+Mysql+Mybatis 实现用户登录注册功能
前言: 最近在学习Java的编程,前辈让我写一个包含数据库和前端的用户登录功能,通过看博客等我先是写了一个最基础的servlet+jsp,再到后来开始用maven进行编程,最终的完成版是一个 Spri ...
- swing 实现用户登录注册界面(不使用数据库)
swing 实现用户登录注册界面(不使用数据库) 实现的功能 先说一下具体实现的功能吧:用户注册后会将注册的对象存入内存中,登录时会遍历注册的对象列表,判断是否登录成功: 登录和注册界面: 本次实验分 ...
- 转:C4项目中验证用户登录一个特性就搞定
转:C4项目中验证用户登录一个特性就搞定 在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用 ...
- vue新手入门之使用vue框架搭建用户登录注册案例,手动搭建webpack+Vue项目(附源码,图文详解,亲测有效)
前言 本篇随笔主要写了手动搭建一个webpack+Vue项目,掌握相关loader的安装与使用,包括css-loader.style-loader.vue-loader.url-loader.sass ...
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- JavaWeb学习 (二十一)————基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
随机推荐
- 使用 Mybatis-plus 进行 crud 操作
1 Mybatis-Plus简介 1.1 什么是Mybatis-Plus MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化 ...
- (八)springMvc 的参数绑定
参数绑定 将客户端传来的 key/value 数据,绑定到 Controller 参数的过程 : 这一过程发生在调用 处理器适配器 的时候,spring 会去调用 参数绑定 组件,我使用的版本(4.5 ...
- 关于泛型擦除的知识(来源于csdn地址:https://blog.csdn.net/briblue/article/details/76736356)
泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇.泛型是 Java 中一个很小巧的概念,但 ...
- 搭建nginx环境
1.安装nginx 下载地址:http://nginx.org/en/download.html 博主选择的是nginx1.8.1,点击下载 下载完成后是一个压缩包, 解压后双击nginx.exe 这 ...
- MUI 支付案例(支付宝/微信)
首先说明一下,本文借鉴了多位博主的文章,所以会看到很多一样的代码. 写这篇博客主要目的是为了便于后期查看(不好之处,敬请留言吐槽),案例经本人测试,是可以使用的. 先上效果图 前端HTML代码: &l ...
- KEIL仿真出现 EVALUATION MODE
原因是KEIL MDK没有破解,重新破解即可
- 如何上传HTML5应用到SAP云平台的Cloud Foundry环境下
先使用WebIDE创建一个HTML5应用.New->Project from Template: 从可选模板里选择SAPUI5 Application: 创建一个HTML5 Module,取名为 ...
- uni-app中nvue (weex) 注意事项
前言 uni-app 是 DCloud 出品的新一代跨端框架,可以说是目前跨端数最多的框架之一了,目前支持发布到:App(Android/iOS).H5.小程序(微信小程序/支付宝小程序/百度小程序/ ...
- PendSV异常介绍、用于上下文切换
在这里,非常感谢<cortex-cm3权威指南>的翻译者. PendSV 的典型使用场合是在上下文切换时(在不同任务之间切换). 例如, 一个系统中有两个就绪的任务,上下文切换被触发的场合 ...
- 共享手机网络给电脑(USB连接)
华为手机步骤: 设置-->搜索-->hdb-->允许HiSuite通过HDB连接设置 设置-->无线和网络-->移动网络共享-->USB共享网络