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 ...
随机推荐
- Spark Scala当中reduceByKey的用法
[学习笔记] /*reduceByKey(function)reduceByKey就是对元素为KV对的RDD中Key相同的元素的Value进行function的reduce操作(如前所述),因此,Ke ...
- POJ 1177 矩形周长并 模板
Picture 题目链接 http://poj.org/problem?id=1177 Description A number of rectangular posters, photographs ...
- poj 3468 整理一下线段树的写法
// 对于延迟更新,我们在updata 和query的时候 pushdown和pushup两个东西都要存在 #include <iostream> #include <cstdio& ...
- python+django学习四
1.setting.py中设置好 STATIC_URL = '/static/'STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')] 前端文件存 ...
- ASP .NET依赖注入理解
ASP .NET依赖注入理解[转]: https://www.cnblogs.com/wzk153/p/10892444.html
- js组合继承
//组合继承指的是将原型链和借用构造函数(call.apply)的技术组合到一起,从而发挥二者之长的一种继承模式,//其背后的思路就是使用原型链实现对原型属性和方法的继承://而通过借用构造函数来实现 ...
- JSON在JS中的应用
一. JSON在JS中的应用: 首先解释下JSON对象与普通js对象字面量定义时格式的区别: Js对象字面量定义格式: var person = { name:"Wede", ag ...
- connect() failed (111: Connection refused) while connecting to upstream的解决
遇到这种情况, 首先 1.检查php-fpm是否启动---------如果没启动->启动, 2.用命令 netstat -ant | grep 9000 查看php-fpm进程,如果没启动-&g ...
- 【php设计模式】模板模式
定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤. 通俗点的理解就是 :完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同 ...
- WCF和SOA的简介
1 什么是SOA:面向服务架构(service oriented architecture),他属于一种组件架构模式.SOA追求的是服务提供方和服务使用方的高度解耦. 服务必须是自解释的,也就是说必须 ...