Java链接MySQL练习题:格式化日期、性别;避免代码注入
生活随笔
收集整理的這篇文章主要介紹了
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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓开源项目周报0104
- 下一篇: 随笔编号-09 批量导入数据(Mysq