模拟淘宝登录

package com.bjsxt.jdbc2;import com.bjsxt.entity.User;
import entity.Emp;import java.nio.file.attribute.UserDefinedFileAttributeView;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;/*** 模拟淘宝登录的功能***/
public class TestLogin {/*** 前台* @param args*/public static void main(String[] args) {//1.输入用户名和密码Scanner input = new Scanner(System.in);System.out.println("请输入用户名");String userId = input.next();System.out.println("请输入密码");String password = input.next();//2.调用后台判断登录是否成功并返回结果给前台User user  = login(userId,password);//3.在前台输入结果if(user == null){System.out.println("登录失败");}else{System.out.println("欢迎您:"+user.getRealName());}}public static User login(String userId,String pwd){Connection conn = null;Statement stmt = null;ResultSet rs = null;User user2 = null; //默认登录失败try{String driver = "com.mysql.cj.jdbc.Driver";String url="jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai";String user = "root";String password = "root";//1.加载驱动Class.forName(driver);//2.和数据库建立连接conn = DriverManager.getConnection(url, user, password);//3.创建一个SQL命令发送器(手枪)stmt = conn.createStatement();//4.准备一个SQL命令,并使用SQL命令发送器发送过去,并返回结果String sql = "select * from t_user where userid = '"+userId+"' and password='"+pwd+"'";System.out.println(sql);rs = stmt.executeQuery(sql);//5.处理结果(将ResultSet的数据封装到一个List中)if(rs.next()){//获取当前行各个字段的值//String userId = rs.getString("userid");String realName = rs.getString("REALNAME");//String password = rs.getString("password");double money = rs.getDouble("money");//将当前行各个字段的值封装到一个Emp对象中user2 = new User(userId,realName,pwd,money);}}catch (SQLException e){e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}finally {//6.关闭资源try {if(rs != null){rs.close();}} catch (SQLException e) {e.printStackTrace();}try {if(stmt != null){stmt.close();}} catch (SQLException e) {e.printStackTrace();}try {if(conn != null){conn.close();}} catch (SQLException e) {e.printStackTrace();}}return user2;}}

缺点:有sql注入风险
解决:使用PreparedStatement

package com.bjsxt.jdbc2;import com.bjsxt.entity.User;import java.sql.*;
import java.util.Scanner;/*** 模拟淘宝登录的功能** 关系* public interface PreparedStatement extends Statement*** PreparedStatement优点* 1.安全性高  避免SQL注入 因为不是基于字符串拼接* 2.代码不繁琐,可读性高。不用进行复杂的字符串拼接* 3.性能高**/
public class TestLogin2 {/*** 前台* @param args*/public static void main(String[] args) {//1.输入用户名和密码Scanner input = new Scanner(System.in);System.out.println("请输入用户名");String userId = input.next();System.out.println("请输入密码");String password = input.next();//2.调用后台判断登录是否成功并返回结果给前台User user  = login(userId,password);//3.在前台输入结果if(user == null){System.out.println("登录失败");}else{System.out.println("欢迎您:"+user.getRealName());}}public static User login(String userId,String pwd){Connection conn = null;//Statement stmt = null;PreparedStatement pstmt = null;ResultSet rs = null;User user2 = null; //默认登录失败try{String driver = "com.mysql.cj.jdbc.Driver";String url="jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai";String user = "root";String password = "root";//1.加载驱动Class.forName(driver);//2.和数据库建立连接conn = DriverManager.getConnection(url, user, password);//3.创建一个SQL命令发送器(手枪)//stmt = conn.createStatement();String sql = "select * from t_user where userid =? and password=?";//? 占位符pstmt = conn.prepareStatement(sql);//4.准备一个SQL命令,并使用SQL命令发送器发送过去,并返回结果//System.out.println(sql);//rs = stmt.executeQuery(sql);pstmt.setString(1, userId);//  从1开始pstmt.setString(2, pwd);rs = pstmt.executeQuery();//5.处理结果(将ResultSet的数据封装到一个List中)if(rs.next()){//获取当前行各个字段的值//String userId = rs.getString("userid");String realName = rs.getString("REALNAME");//String password = rs.getString("password");double money = rs.getDouble("money");//将当前行各个字段的值封装到一个Emp对象中user2 = new User(userId,realName,pwd,money);}}catch (SQLException e){e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}finally {//6.关闭资源try {if(rs != null){rs.close();}} catch (SQLException e) {e.printStackTrace();}try {if(pstmt != null){pstmt.close();}} catch (SQLException e) {e.printStackTrace();}try {if(conn != null){conn.close();}} catch (SQLException e) {e.printStackTrace();}}return user2;}}

事务管理

package com.bjsxt.jdbc2;import java.sql.*;/*** 银行转账*/
public class TestTransaction {public static void main(String[] args){Connection conn = null;CallableStatement cst;try{String driver = "com.mysql.cj.jdbc.Driver";String url="jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai";String user = "root";String password = "root";//1.加载驱动//Class.forName(driver);//2.和数据库建立连接conn = DriverManager.getConnection(url, user, password);//3.创建一个SQL命令发送器(手枪)Statement stmt = conn.createStatement();//设置事务不再自动提交conn.setAutoCommit(false);//4.准备一个SQL命令,并使用SQL命令发送器发送过去,并返回结果stmt.executeUpdate("update t_user set money = money - 2000 where userid = 'lisi'");//stmt.executeUpdate("update t_user set money = money1 + 2000 where userid = 'zhangsan'");stmt.executeUpdate("update t_user set money = money + 2000 where userid = 'zhangsan'");//事务成功结束conn.commit();}catch (SQLException e){e.printStackTrace();//事务失败结束try {conn.rollback();} catch (SQLException ex) {ex.printStackTrace();}}finally {//6.关闭资源
//            stmt.close();
//            conn.close();}}
}

JDBC登录功能实现相关推荐

  1. mysql+jdbc连接数据库简单实现登录功能 --java

    初识java web 实现简单的登录功能 mvc结构实现mysql 连接 什么是mvc MVC是模型(model).视图(view).控制(controller)这三个单词上的首字母组成.它是一种应用 ...

  2. JDBC连接数据库实现登录功能

    JDBC连接数据库实现登录功能 在MySQL数据库中创建用户以及密码 实现登录功能 连接MySQL数据库 登录验证 在MySQL数据库中创建用户以及密码 选中要使用的数据库,在数据库中创立一个user ...

  3. java 登录按钮响应数据库_用户登录功能的实现—从前端到后台(包括数据库)...

    温馨提示:本文难度有点大,建议收藏后在阅读! 首先给大家分享一件糗事! 本来今天这篇文会很长的 写到一半突然发现 还没有给大家分享 数据库 jdbc MVC模式 直接就来分享实战了 我的锅! 源码会分 ...

  4. Apache Shiro实现用户登录功能

    apache shiro实现用户登录功能 配置shiro的Filter实现URL级别权限控制 配置web.xml <!-- shiro的过滤器 --> <filter>< ...

  5. jsp oracle 登录页面,Oracle数据库之ORACLE+Myeclipse+jsp实现简单登录功能

    本文主要向大家介绍了Oracle数据库之ORACLE+Myeclipse+jsp实现简单登录功能,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. Oracle数据库表的建立: c ...

  6. JSP小项目,会员管理系统之实现登录功能

    1.上学期,在学期结束之际,学校安排实训,做了一个小小的JSP会员管理系统,今天,来介绍一下会员管理系统中的登录模块,此系统是使用JSP和Servlet技术,在加上JavaBean来实现的,是一个MV ...

  7. java 记录用户_JavaWeb学习记录(六)——用户登录功能

    使用JDBC.spring框架.servlet实现一个简单的用户登录功能. 一.mySql数据库 SET FOREIGN_KEY_CHECKS=0; -- ---------------------- ...

  8. springboot文件上传下载实战 —— 登录功能、展示所有文件

    springboot文件上传下载实战 创建项目 pom.xml 数据库建表与环境准备 建表SQL 配置文件 application.properties 整体架构 前端页面 登录页面 login.ht ...

  9. 宿舍管理系统之登录功能

    宿舍管理系统之登录功能 ​ 实现宿舍管理系统的登录功能,用户输入账号.密码和勾选用户角色点击登录,前端页面将用户输入的账号.密码等信息采用异步的方式提交到服务器上.后端将用户的输入的信息与数据库中的用 ...

最新文章

  1. 世界人工智能发展究竟到了什么水平
  2. 直击2019WAIC丨李德毅:人工智能是脱离意识的工具,需要约束的是人类自己
  3. 董明珠:别嫌工资少,满足这些条件!多高都给你
  4. 12.figure/subplot多窗口技巧
  5. linux加密格式化吗,linux环境下给文件加密/解密的方法
  6. 项目进度管理:排列活动顺序
  7. angular input和output
  8. PHP实现中文字符串截取无乱码
  9. 千呼万唤始出来 ===Visual Studio Team System 2008 Team Suite 中文版 Out!!!
  10. Rust 2018临近:设法从Rust 2015过渡
  11. linux怎么查看服务器主频,Linux环境下查看服务器硬件信息
  12. 什么是垃圾回收(转)
  13. Hyperworks——Optistruct学习分享
  14. 用cat命令生成软盘镜像文件
  15. 企业微信本地测试环境搭建
  16. 修复PS插件Nik Collection崩溃的解决方法
  17. Kotlin 中的 by lazy
  18. angularjs的三目运算
  19. 2020计算机专业评估,2020年计算机学科大学排名TOP50,实力强,毕业生认可度高...
  20. opendolphin_认床的你也许拥有海豚般的睡眠

热门文章

  1. mysql_result函数用不了_mysql_result()函数怎么在PHP中使用
  2. 大话数据结构学习笔记一:第一章
  3. 牛客练习赛50 F tokitsukaze and Another Protoss and Zerg
  4. P3804 【模板】后缀自动机 (SAM)
  5. 【CF1215E】Marbles【状压DP】
  6. 2021牛客暑期多校训练营9
  7. [HDU 6643] Ridiculous Netizens(点分治+根号分治+dp)
  8. P6257-[ICPC2019 WF]First of Her Name【AC自动机】
  9. P1429-平面最近点对(加强版)【分治】
  10. nssl1304-最大正方形【二分答案】