欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

怎么使用预编译对象?

程序员文章站 2023-10-18 23:40:14
1 package jdbcDome; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; ... ......
 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 }