• 怎么使用预编译对象?


     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 }
  • 相关阅读:
    node.js 的简单介绍
    vue浅析
    rest_framework的分页器组件配置与使用
    restframwork组件的权限认证
    关于and和or的运算
    restframwork组件的使用
    实现简单的子页面传值给父页面
    Django使用orm模块时想看多对对数据关系的配置
    Django更新数据库表时无法执行表修改 指定Django要使用的数据库
    图论-kruskal算法-稀疏图
  • 原文地址:https://www.cnblogs.com/xw1024/p/11103644.html
Copyright © 2020-2023  润新知