怎么使用预编译对象?

 1 package jdbcDome;
 2 
 3 import java.sql.Connection;
 4 import java.sql.PreparedStatement;
 5 import java.sql.ResultSet;
 6 import java.sql.SQLException;
 7 import java.util.Scanner;
 8 
 9 import javafx.geometry.Side;
10 
11 
12 
13 /**
14  * 
15  * @author 不凡
16  *这里是使用的基础的方法,也是一开始学习的方法,
17 * 但是不能防止SQL注入,(但是可以在输入框中限制特殊字符输入来达到同样的目的)
18 * 下面的是预编译语句对象
19  */
20 public class DBText {
21     public static void main(String[] args) {
22         /*
23          
24          * 
25          *
26         jdbcTools db1 =jdbcTools.getDB();
27         Scanner sc1 =new Scanner(System.in);
28         System.out.println("请输入你的账号: ");
29         int  Sid =   sc1.nextInt();
30         System.out.println("请输入你的密码");
31         String pwd = sc1.next();
32         String sqlQuery="select * from student where sid  = "+Sid+" and pwd  ='"+pwd+"'";
33         
34         ResultSet rs1 =  db1.query(sqlQuery);
35         try {
36             if(rs1.next())
37             {
38             System.out.println("登陆成功!");
39             System.out.println(sqlQuery);
40             System.out.println(rs1.getString(2));
41                 }else {
42                     System.out.println("登陆失败!");
43                     
44                 }
45         
46         } catch (SQLException e) {
47             // TODO Auto-generated catch block
48             e.printStackTrace();
49         }
50         
51         */
52         //--------------------------------------------------------------------------------------------
53         //这里使用的预编译语句对象   有三个特点
54         /* 1.防止SQL注入
55          * 2.简单 
56          * 3.可以用(?)问号,充当占位 更加方便 
57          * 4.语句只编译执行效率更高。
58          * 
59          */
60         Scanner sc1 =new Scanner(System.in);
61         System.out.println("请输入你的账号: ");
62         int  Sid =   sc1.nextInt();
63         System.out.println("请输入你的密码");
64         String pwd = sc1.next();
65         // 问好(?) 表示占位符
66         String sqlQuery="select * from student where sid  = ? and pwd  =?";
67         Connection con1 =  jdbcTools.getConn();
68         try {
69             //生成预编译语句对象
70             PreparedStatement pSt =  con1.prepareStatement(sqlQuery);
71             //给占位符赋值
72             pSt.setInt(1, Sid);
73             pSt.setString(2, pwd);
74             //执行预编译对象
75             ResultSet rs2= pSt.executeQuery();
76             if(rs2.next()){
77                 System.out.println("登陆成功");
78                 rs2.getString(2);
79             }else{
80                 System.out.println("登陆失败!");
81             }
82             
83         } catch (SQLException e) {
84             e.printStackTrace();
85         }
86         
87     }
88 
89 }
原文地址:https://www.cnblogs.com/xw1024/p/11103644.html