首页 > 其他分享 >基于preparedStatement方式优化

基于preparedStatement方式优化

时间:2024-03-05 15:23:38浏览次数:32  
标签:语句 基于 preparedStatement String System statement SQL 优化

 1 package com.atsyc.api.preparedstatement;
 2 
 3 /*
 4  * 使用预编译statement完成用户登录
 5  *
 6  * TODO:
 7  *      防止注入攻击,演示preparedstatement完成用户登录
 8  */
 9 
10 import java.sql.*;
11 import java.util.Scanner;
12 
13 public class PSUserLoginPart {
14     public static void main(String[] args) throws ClassNotFoundException, SQLException {
15         //1.获取用户输入信息
16         Scanner scanner = new Scanner(System.in);
17         System.out.println("请输入账号:");
18         String account = scanner.nextLine();
19         System.out.println("请输入密码:");
20         String password = scanner.nextLine();
21 
22         //2.ps的数据库流程
23             //(1)注册驱动
24         Class.forName("com.mysql.cj.jdbc.Driver");
25             //(2)获取连接
26         Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/atsyc","root","Yican030615");
27             /*
28              * statement
29              *      1.创建statement
30              *      2.拼接SQL语句
31              *      3.发送SQL语句,并且获取返回结果
32              *
33              * preparedstatement
34              *      1.编写SQL语句结果  不包含动态值部分的语句,动态值部分使用占位符 ? 替代(只能替代动态值)
35              *      2.创建preparedStatement,并且传入动态值
36              *      3.动态值 占位符 赋值 ? 单独赋值即可
37              *      4.发送SQL语句即可,并获取返回结果
38              */
39             //(3)编写SQL语句结果
40         String sql = "SELECT * FROM t_user WHERE account = ? and password = ? ; ";
41             //(4)创建预编译statement并设置SQL语句结果
42         PreparedStatement preparedStatement = connection.prepareStatement(sql);
43             //(5)单独的占位符进行赋值
44             /*
45              * 参数1:index 占位符的位置 从左向右数 从1开始 账号 ? 1
46              * 参数2:object 占位符的值 可以设置任何类型的数据,避免了我们拼接和类型更加丰富
47              */
48         preparedStatement.setObject(1,account);
49         preparedStatement.setObject(2,password);
50             //(6)发送SQL语句,获取返回结果
51             /*
52              * statement.excuteUpdate / executeQuery(String sql);
53              * preparedStatement.excuteUpdate / executeQuery();  TODO:因为他已经知道语句,知道语句动态值
54              */
55         ResultSet resultSet = preparedStatement.executeQuery();
56             //(7)结果集解析
57         if(resultSet.next()){
58             System.out.println("登陆成功!");
59         }else{
60             System.out.println("登陆失败!");
61         }
62 
63     }
64 }

 

标签:语句,基于,preparedStatement,String,System,statement,SQL,优化
From: https://www.cnblogs.com/IrVolcano/p/18054126

相关文章

  • spfa优化
    1.SLF优化在我们学SPFA的时候,要把每一个入队的点插入到队尾,可是有些时候这个点作为队尾没有作为队头效率高,因为这个点有时放在队首就能直接用,那么什么样的点作为队首更好呢?当然是dis值越小越可能刷新其它\(dis\)值,所以对比当前元素与对首元素的\(dis\)值,如果当前元素的\(dis......
  • 使用 explain 索引优化(转)
    使用explain索引优化(转)原文:https://mp.weixin.qq.com/s?__biz=MzkwNjMwMTgzMQ==&mid=2247490262&idx=1&sn=a67f610afa984ecca130a54a3be453ab&source=41#wechat_redirect1、前言对于互联网公司来说,随着用户量和数据量的不断增加,慢查询是无法避免的问题。一般情况下如果出现慢......
  • 聊聊sql优化的15个小技巧(转)
    原文:https://mp.weixin.qq.com/s/DsUrEHdkMvsO7RvnDcKNhg1避免使用select*很多时候,我们写sql语句时,为了方便,喜欢直接使用select*,一次性查出表中所有列的数据。反例:select*fromuserwhereid=1;在实际业务场景中,可能我们真正需要使用的只有其中一两列。查了很多数据,但......
  • asp.net core 中基于策略的授权-自定义授权
    前两篇文章扫盲篇,进阶篇中介绍了基本的asp.netcore中基于策略的授权的使用方法。使用策略授权时,只能指定策略,不能配置其他信息。[Authorize(Policy="AtLeast21")]//指定要验证的策略publicclassAlcoholPurchaseController:Controller{publicIA......
  • mysql8.0 性能优化配置 innodb_buffer_pool_size(配置原则和方式)
    1. BufferPool缓冲池是主内存中的一个区域,InnoDB在访问表和索引数据时会在该区域进行缓存。缓冲池允许直接从内存访问频繁使用的数据,这加快了处理速度。在专用服务器上,通常会将高达80%的物理内存分配给缓冲池。2.简单优化把innodb_buffer_pool_size设置为1G。专用服务......
  • 基于Ant Design设计语言的WinForm UI界面库
    前言经常在技术群里看到有小伙伴提问:WinForm有什么好看、开源的UI库推荐的吗?,今天大姚给大家分享一款基于AntDesign(使用AntDesign5.0)设计语言、开源(ApacheLicense)的WinFormUI界面库:AntdUI。假如你有好用的WinFormUI库推荐,欢迎文末留言......
  • 基于statement,明确jdbc流程,发现问题,引出preparedstatement
    packagecom.atsyc.api.statement;importcom.mysql.cj.jdbc.Driver;importjava.sql.*;importjava.util.Properties;importjava.util.Scanner;/**TODO:*1.明确jdbc的使用流程和详细讲解内部设计api方法*2.发现问题,引出preparedStatement......
  • 44对象优化
    对象优化对象优化的原则:函数参数传递的过程中,对象优先按引用传递,不要按值传递,这样少形参的构造和析构函数返回对象时,优先返回一个临时对象,而不要返回一个定义过的对象,这样少一个函数中对象的构造析构接受返回值是对象的函数调用时,用初始化的方式接受,而不用先定义再赋值的方式......
  • 快速排序的三种实现及简单优化(内附代码实现)
    概念​ 先贴一段百度:快速排序采用的是分治思想,即在一个无序的序列中选取一个任意的基准元素key,利用key将待排序的序列分成两部分,前面部分元素均小于或等于基准元素,后面部分均大于或等于基准元素,然后采用递归的方法分别对前后两部分重复上述操作,直到将无序序列排列成有序序列。步......
  • RunnerGo-基于Go的开源测试平台介绍及使用
    前言测试人员目前广泛使用的测试工具如Postman、JMeter等,如Postman缺少对API的性能测试部分、JMeter则缺少测试报告和测试脚本的统一管理系统及UI测试功能,而RunnerGo的出现填补了传统测试工具的空缺,为测试人员提供了一个可以满足测试全流程的测试工具,本文将介绍RunnerGo的功能特......