JDBC登录功能实现
生活随笔
收集整理的這篇文章主要介紹了
JDBC登录功能实现
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
模擬淘寶登錄
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.調(diào)用后臺判斷登錄是否成功并返回結(jié)果給前臺User user = login(userId,password);//3.在前臺輸入結(jié)果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.加載驅(qū)動Class.forName(driver);//2.和數(shù)據(jù)庫建立連接conn = DriverManager.getConnection(url, user, password);//3.創(chuàng)建一個SQL命令發(fā)送器(手槍)stmt = conn.createStatement();//4.準備一個SQL命令,并使用SQL命令發(fā)送器發(fā)送過去,并返回結(jié)果String sql = "select * from t_user where userid = '"+userId+"' and password='"+pwd+"'";System.out.println(sql);rs = stmt.executeQuery(sql);//5.處理結(jié)果(將ResultSet的數(shù)據(jù)封裝到一個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.關(guān)閉資源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
事務(wù)管理
package com.bjsxt.jdbc2;import java.sql.*;/*** 銀行轉(zhuǎn)賬*/ 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.加載驅(qū)動//Class.forName(driver);//2.和數(shù)據(jù)庫建立連接conn = DriverManager.getConnection(url, user, password);//3.創(chuàng)建一個SQL命令發(fā)送器(手槍)Statement stmt = conn.createStatement();//設(shè)置事務(wù)不再自動提交conn.setAutoCommit(false);//4.準備一個SQL命令,并使用SQL命令發(fā)送器發(fā)送過去,并返回結(jié)果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'");//事務(wù)成功結(jié)束conn.commit();}catch (SQLException e){e.printStackTrace();//事務(wù)失敗結(jié)束try {conn.rollback();} catch (SQLException ex) {ex.printStackTrace();}}finally {//6.關(guān)閉資源 // stmt.close(); // conn.close();}} }總結(jié)
以上是生活随笔為你收集整理的JDBC登录功能实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。