日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Java链接MySQL练习题:格式化日期、性别;避免代码注入

發(fā)布時間:2023/12/20 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java链接MySQL练习题:格式化日期、性别;避免代码注入 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、查詢?nèi)藛T名單,按序號 姓名 性格(男或女) 民族(某族) 生日(年月日)輸出

import java.sql.*; import java.text.SimpleDateFormat;public class Hr {public static void main(String[] args) throws Exception{Class.forName("com.mysql.jdbc.Driver");Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","");Statement state=conn.createStatement();String sql="select * from info";ResultSet rs=state.executeQuery(sql);while(rs.next()){System.out.print(rs.getString(1)+"\t");System.out.print(rs.getString(2)+"\t");System.out.print(rs.getBoolean(3)?"男"+"\t":"女"+"\t");//三目運算符 ?:System.out.print(minZu(rs.getString(4))+"\t");//調(diào)用minZu方法,按民族代碼查到民族名稱System.out.print(riQi(rs.getDate(5))+"\n");//調(diào)用riQi方法格式化日期 }conn.close();}public static String riQi(Date d) {//新建一個方法riQi,格式化日期為xxxx年xx月xx日SimpleDateFormat f=new SimpleDateFormat("yyyy年MM月dd日");return f.format(d);}public static String minZu(String mz) throws Exception{//新建一個方法String mzmc="";Class.forName("com.mysql.jdbc.Driver");Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","");Statement state=conn.createStatement();String sql="select * from nation where code='"+mz+"' ";//在nation表,按民族代碼查到民族名稱ResultSet rs= state.executeQuery(sql);if(rs.next()==true){mzmc=rs.getString(2);}conn.close();return mzmc; }}

輸出結(jié)果

p001 胡軍 男 滿族 1985年08月09日 p002 周丹 女 漢族 1984年04月17日 p003 吳倩 女 苗族 1981年10月29日 p004 唐墨 男 漢族 1983年02月25日

?

二、輸入賬號、密碼實現(xiàn)登陸

import java.sql.*; import java.util.Scanner;public class Login {public static void main(String[] args) throws Exception{//輸入賬號密碼Scanner sc=new Scanner(System.in);System.out.println("賬號:");String uid=sc.nextLine();System.out.println("密碼:");String pwd=sc.nextLine();uid=uid.replace("\'", "\"");//將用戶輸入的內(nèi)容中單引號(')替換為雙引號(")/*如果輸入內(nèi)容存在單引號(')就會破壞sql語句的結(jié)構(gòu),例如uid=a' or 1=1 #sql語句就變成了 select * from users where username='a' or 1=1 #' and password='"+pwd+"'這樣整段sql語句就會被破壞掉,這種方式叫做代碼注入*///到數(shù)據(jù)庫連接用戶名密碼正確與否Class.forName("com.mysql.jdbc.Driver");Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?characterEncoding=GBK", "root", "");Statement state=conn.createStatement();String sql="select * from users where username='"+uid+"' and password='"+pwd+"'";ResultSet rs=state.executeQuery(sql);//輸出if(rs.next()){System.out.println("登陸成功,歡迎"+rs.getString(3));}else{System.out.println("用戶名或密碼錯誤");}conn.close();}}

推薦用PreparedStatement接口避免代碼注入

public static void main(String[] args) throws Exception{//輸入賬號密碼Scanner sc=new Scanner(System.in);System.out.println("賬號:");String uid=sc.nextLine();System.out.println("密碼:");String pwd=sc.nextLine();//連接到數(shù)據(jù)庫判斷賬號密碼Class.forName("com.mysql.jdbc.Driver");Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?characterEncoding=GBK","root","");String sql="select * from users where username=? and password=? ";//語句避免出現(xiàn)單引號('),無論用戶輸入什么內(nèi)容都不會造成代碼注入PreparedStatement state=conn.prepareStatement(sql);state.setString(1, uid);//表示sql語句中的第一個“?”state.setString(2, pwd);//與上同理ResultSet rs=state.executeQuery();//輸出結(jié)果if(rs.next()){System.out.println("登陸成功,歡迎"+rs.getString(3));}else{System.out.println("用戶名或密碼錯誤");}conn.close();}

三、往數(shù)據(jù)庫表里插入新內(nèi)容

public static void main(String[] args) throws Exception{//輸入數(shù)據(jù)Scanner sc=new Scanner(System.in);System.out.println("賬號:");String uid=sc.nextLine();System.out.println("密碼:");String pwd=sc.nextLine();System.out.println("昵稱:");String nick=sc.nextLine();//連接數(shù)據(jù)庫并處理Class.forName("com.mysql.jdbc.Driver");Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?characterEncoding=GBK","root","");String sql="insert into users values(?,?,?)";PreparedStatement state=conn.prepareStatement(sql);state.setString(1, uid);//數(shù)字1表示sql語句中第一個“?”state.setString(2, pwd);state.setString(3, nick);state.executeUpdate();conn.close(); }

?

轉(zhuǎn)載于:https://www.cnblogs.com/jonsnow/p/6249822.html

總結(jié)

以上是生活随笔為你收集整理的Java链接MySQL练习题:格式化日期、性别;避免代码注入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。