JavaEE-JDBC
JavaEE-JDBC
什么是 JDBC?
Java 数据库连接,(Java Database Connectivity,简称 JDBC)是 Java 语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC 也是 Sun Microsystems 的商标。我们通常说的 JDBC 是面向关系型数据库的。
简而言之,JDBC 就是 JDK 提供的关于数据库操作的一套接口规范,不同数据库厂商来负责实现这个接口,完成指定的操作。
用程序和数据建立连接,分为三步骤:
连接数据库
执行 SQL 语句
把查询到的结果集转换成 JAVA 对象
安装 mysql-connector-java.jar 文件
下载地址(官网):MySQL :: Download Connector/J
(1)加载驱动程序(通过反射找到对应的 re 包)
1 | // 加载Oracle“驱动类” SPI |
(2)获取数据库连接:
1 | // 创建“URL连接字符串”。格式:jdbc:oracle:thin:@ 主机名/IP : 端口号 :服务名称 |
(3)Statement 对象(对静态 sql 的执行)
Statement 对象可以用来执行 SQL 语句,使用 executeQuery 执行查询语句,返回结果集,使用 executeUpdate 执行增删改,返回操作的行数。
1 | Statement statement = conn.createStatement(); |
(4)结果 ResultSet 进行提取
1 | String sql = "select * from users"; |
JDBC 预编译
在 JDBC 中,预编译指的是使用 PreparedStatement 接口来执行 SQL 语句
- 性能提升:预编译的 SQL 语句只需要解析一次,可以重复执行多次,减少了数据库解析 SQL 的时间。
- 参数化查询:预编译的 SQL 语句可以使用占位符(?)代替实际值,这使得相同的 SQL 语句可以使用不同的参数值执行。
- 防止 SQL 注入:预编译的 SQL 语句可以自动转义特殊字符,从而防止 SQL 注入攻击。
创建预编译 Statement,并把 sql 语句传入,此时 sql 语句已与此 prepareStatement 绑定,所以执行语句时无需再把 sql 语句作为参数传入 execute ()。
定义预编译的 sql 语句,其中待填入的参数用?占位。注意,? 无关类型,不需要加分号之类。其具体数据类型在下面 setXX()时决定
1 | String sql = "insert into student(id,name,passwd) values(?,?,?)"; |
1 | //填入具体参数。通过setXX(问号下标,数值)来为sql语句填入具体数据。注意:问号下标从1开始,setXX与数值类型有关,字符串就是setString(index,str). |