JAVA通过JDBC链接数据库获取数据(三)PreparedStatement预编译SQL

举报
brucexiaogui 发表于 2021/12/30 01:26:48 2021/12/30
【摘要】 JAVA通过JDBC链接数据库获取数据(三)PreparedStatement预编译SQL 一、PreparedStatement 作用 1、可以防止SQL注入:对JDBC而言,SQL注入攻击只对Statement有效,对PreparedStatement是无效的,这是因为PreparedStatement不允许在插入时改变查...

JAVA通过JDBC链接数据库获取数据(三)PreparedStatement预编译SQL


一、PreparedStatement 作用

1、可以防止SQL注入:对JDBC而言,SQL注入攻击只对Statement有效,对PreparedStatement是无效的,这是因为PreparedStatement不允许在插入时改变查询的逻辑结构.

2、可以存储和读取大文本文件。

二、PreparedStatement 操作数据库使用实例



  
  1. package com.sql;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.PreparedStatement;
  5. import java.sql.SQLException;
  6. import java.util.Scanner;
  7. import org.junit.After;
  8. import org.junit.Before;
  9. import org.junit.Test;
  10. public class PreparedStatementDemo {
  11. Connection con = null;
  12. // 在执行SQL语句前先执行 @Before 的代码
  13. @Before
  14. public void init() throws Exception{
  15. //注册驱动
  16. Class.forName("com.mysql.jdbc.Driver");
  17. //获取链接
  18. String url = ("jdbc:mysql://127.0.0.1:3306/long1?characterEncoding=UTF8");
  19. con = DriverManager.getConnection(url,"root","123456");
  20. System.out.println(con);
  21. }
  22. //获取到数据库的数据后,执行释放资源
  23. @After
  24. public void destory() throws SQLException{
  25. con.close();
  26. }
  27. @Test
  28. public void Preparedst() throws SQLException{
  29. System.out.println("请输入账号和密码");
  30. Scanner sc = new Scanner(System.in);
  31. String name = sc.nextLine(); //输入账号
  32. String pwd = sc.next(); //输入密码
  33. //获取sql 输入的参数都用? 作为占位符
  34. String sql = "insert into uses(u_name,pwd) values(?,?)";
  35. //输出SQL语句,?号不会显示为具体的参数都是在PreparedStatement内部处理。不会给其他人看到。
  36. System.out.println("sql 语句是:"+sql);
  37. //获取预编译的statement
  38. PreparedStatement pt = con.prepareStatement(sql);
  39. //给每一个?替换成输入的参数
  40. //第一个?替换成输入的账号 name变量
  41. pt.setString(1, name);
  42. //第二个?替换成输入的密码 pwd 变量
  43. pt.setString(2, pwd);
  44. //执行sql语句
  45. pt.executeUpdate();
  46. }
  47. }


文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。

原文链接:brucelong.blog.csdn.net/article/details/77915864

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。