JDBC学习(二):PreparedStatement初体验

简介: JDBC学习(二):PreparedStatement初体验

今天闲来无事,将之前学习的笔记都整理一下,下面几篇博客都是用来记录JDBC的学习过程。

PreparedStatement是Statement的子接口,相较于Statement,它的好处有(面试必问):


1、不用拼串,并解决了SQL注入问题

2、能够操作Blob类型的数据

3、可以实现更高效的批量操作


package demo02;
import java.io.IOException;
import java.io.InputStream;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;
import org.junit.jupiter.api.Test;
import com.mysql.jdbc.Connection;
public class TestPreparedStatement {
  @Test
  public void testInsert() {
    // 4. 获取连接
    Connection conn = null;
    PreparedStatement ps = null;
    try {
      // 1. 加载配置文件
      InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
      Properties pros = new Properties();
      pros.load(is);
      // 2. 读取配置信息
      String user = pros.getProperty("user");
      String password = pros.getProperty("password");
      String url = pros.getProperty("url");
      String driverClass = pros.getProperty("driverClass");
      // 3. 加载驱动
      Class.forName(driverClass);
      conn = (Connection) DriverManager.getConnection(url, user, password);
      // 5.预编译sql语句
      String sql = "insert into beauty(name,sex,borndate,phone)values(?,?,?,?)";
      ps = conn.prepareStatement(sql);
      // 6.填充占位符
      ps.setString(1, "刘亦菲");
      ps.setString(2, "女");
      ps.setString(3, "1986-02-03 00:00:00");
      ps.setString(4, "12345678910");
      // 7.执行操作(sql)
      ps.execute();
      System.out.println("insert successfully!");
    } catch (ClassNotFoundException e1) {
      e1.printStackTrace();
    } catch (IOException e1) {
      e1.printStackTrace();
    } catch (SQLException e1) {
      e1.printStackTrace();
    } finally {
      // 8.资源关闭
      try {
        if (ps != null)
          ps.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
      try {
        if (conn != null)
          conn.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
}



对应的数据库本来想直接贴sql文件代码的,但是一直提示有非法字符,排查不出来,就贴张图吧


20210722182911547.png


相关文章
|
4天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
ava从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
|
2月前
|
SQL Java 关系型数据库
JDBC PreparedStatement 字段值为null导致TBase带宽飙升的案例分析
JDBC PreparedStatement 字段值为null导致TBase带宽飙升的案例分析
49 0
|
2月前
|
SQL druid Java
JDBC技术【分页查询、数据库连接池、应用程序分层、封装通用的BaseDao】(四)-全面详解(学习总结---从入门到深化)
JDBC技术【分页查询、数据库连接池、应用程序分层、封装通用的BaseDao】(四)-全面详解(学习总结---从入门到深化)
30 0
|
3月前
|
SQL Java 关系型数据库
Java学习—JDBC
Java学习—JDBC
|
3月前
|
SQL Java 数据库连接
JDBC技术【分页查询、数据库连接池、应用程序分层、封装通用的BaseDao】(四)-全面详解(学习总结---从入门到深化)(下)
JDBC技术【分页查询、数据库连接池、应用程序分层、封装通用的BaseDao】(四)-全面详解(学习总结---从入门到深化)
363 1
|
3月前
|
SQL Java 数据库连接
JDBC技术【分页查询、数据库连接池、应用程序分层、封装通用的BaseDao】(四)-全面详解(学习总结---从入门到深化)(中)
JDBC技术【分页查询、数据库连接池、应用程序分层、封装通用的BaseDao】(四)-全面详解(学习总结---从入门到深化)
28 0
|
3月前
|
SQL Java 关系型数据库
JDBC技术【SQL注入、JDBC批量添加数据、JDBC事务处理、其他查询方式】(三)-全面详解(学习总结---从入门到深化)
JDBC技术【SQL注入、JDBC批量添加数据、JDBC事务处理、其他查询方式】(三)-全面详解(学习总结---从入门到深化)
33 0
|
3月前
|
SQL 存储 Java
JDBC技术【封装JDBC工具类、Statement的使用、PreparedStatement的使用(重点)、ResultSet的使用】(二)-全面详解(学习总结---从入门到深化)
JDBC技术【封装JDBC工具类、Statement的使用、PreparedStatement的使用(重点)、ResultSet的使用】(二)-全面详解(学习总结---从入门到深化)
37 0
|
3月前
|
SQL Java 关系型数据库
JDBC技术【JDBC概述、获取数据库连接、 下载数据库驱动】(一)-全面详解(学习总结---从入门到深化)
JDBC技术【JDBC概述、获取数据库连接、 下载数据库驱动】(一)-全面详解(学习总结---从入门到深化)
45 0
JDBC技术【JDBC概述、获取数据库连接、 下载数据库驱动】(一)-全面详解(学习总结---从入门到深化)
|
4月前
|
SQL 缓存 Java
JDBC中PreparedStatement常用操作实践
JDBC中PreparedStatement常用操作实践
106 1