怎么使用预编译对象?
程序员文章站
2022-06-03 18:09:20
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 }