先实现数据库和数据表,检测正常后再做其他的

 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--实现用户登录注册的更多相关文章

  1. Java数据库小项目00---基础知识

    目录 JDBC的简单使用 向JDBC注入攻击 防止注入攻击 自建JDBC工具类 自建工具类优化--使用配置文件 使用数据库连接池优化工具类 JDBC的简单使用 package Test; import ...

  2. Java数据库小项目02--管家婆项目

    目录 项目要求 开发环境搭建 工具类JDBCUtils 创建管家婆数据表 项目分层 MainApp层 MainView层 ZhangWuController层 ZhangWuService层 Zhan ...

  3. android安卓Sqlite数据库实现用户登录注册

    看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...

  4. Java Spring+Mysql+Mybatis 实现用户登录注册功能

    前言: 最近在学习Java的编程,前辈让我写一个包含数据库和前端的用户登录功能,通过看博客等我先是写了一个最基础的servlet+jsp,再到后来开始用maven进行编程,最终的完成版是一个 Spri ...

  5. swing 实现用户登录注册界面(不使用数据库)

    swing 实现用户登录注册界面(不使用数据库) 实现的功能 先说一下具体实现的功能吧:用户注册后会将注册的对象存入内存中,登录时会遍历注册的对象列表,判断是否登录成功: 登录和注册界面: 本次实验分 ...

  6. 转:C4项目中验证用户登录一个特性就搞定

    转:C4项目中验证用户登录一个特性就搞定   在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性.     // 摘要:    //     表示一个特性,该特性用于限制调用 ...

  7. vue新手入门之使用vue框架搭建用户登录注册案例,手动搭建webpack+Vue项目(附源码,图文详解,亲测有效)

    前言 本篇随笔主要写了手动搭建一个webpack+Vue项目,掌握相关loader的安装与使用,包括css-loader.style-loader.vue-loader.url-loader.sass ...

  8. javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  9. JavaWeb学习 (二十一)————基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

随机推荐

  1. Kubernetes---Pod笔记

    ⒈pod的理解     将多个容器镜像融合在一起,共享网络命名空间及容器卷 ⒉pod的分类 自助式podv          不是被控制器管理的pod,它一旦死亡不会被人给拉起来. 控制器管理的pod ...

  2. 【深入浅出-JVM】(7):栈上分配

    概念 对那些作用于不会逃逸出方法的对象,在分配内存时,不在将对象分配在堆内存中,而是将对象属性打散后分配在线程私有栈内存上,这样随着方法调用结束,栈上分配打散的对象也被回收掉,不在增加 GC 额外压力 ...

  3. Dijstra_优先队列_前向星

    Dijstra算法求最短路径 具体实现方式 设置源点,将源点从原集u{}中取出并放入新建集s{} 找出至源点最近的点q从原集取出放入新集s{} 由q点出发,更新所有由q点能到达的仍处于原集的点到源点的 ...

  4. MyBatis学习存档(4)——进行CRUD操作

    使用MyBatis进行数据库的CRUD操作有2种方式:一种如之前所说的接口+xml,而另一种是通过对接口上的方法加注解(@Select @Insert @Delete @Update) 但是通常情况下 ...

  5. nginx浏览器开启密码验证

    如果我们在 nginx 下搭建了一些站点,但是由于站点内容或者流量的关系,我们并不想让所有人都能正常访问,那么我们可以设置访问认证.只有让用户输入正确的用户名和密码才能正常访问.效果如下: 在 ngi ...

  6. DSN 建立达梦7(DM)连接

    (DSN)Data Source Name 数据源名称 “ODBC数据源管理器”提供了三种DSN,分别为用户DSN.系统DSN和文件DSN.其中:      用户DSN会把相应的配置信息保存在Wind ...

  7. bootstrap-table的简单使用

    先上效果图: 第一步:引用bootstrap-table的样式和js. @Styles.Render("~/assets/css/bootstrap.css") @Styles.R ...

  8. 二元变量图形的pandas方法

    数据加载: 1.散点图 上图使用下采样的方法选取了100个样本点,因为把所有的数据加载进来太多了. 2.Hexplot图 上图是一个散点图再加上热力标注的形式,可以更准确的帮助我们看出数据集中在哪些区 ...

  9. ES6入门六:class的基本语法、继承、私有与静态属性、修饰器

    基本语法 继承 私有属性与方法.静态属性与方法 修饰器(Decorator) 一.基本语法 class Grammar{ constructor(name,age){ //定义对象自身的方法和属性 t ...

  10. 小程序 ----踩坑 ---安卓iOS兼容等

    关于小程序一些小功能的代码都在这个GitHub上,感兴趣的可以去看看,https://github.com/huihuijiang/miniProgram目前有:列表左滑删除,拖拽浮标 一.小程序坑1 ...