开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情
今天闲来无事,将之前学习的笔记都整理一下,下面几篇博客都是用来记录JDBC的学习过程。
什么是JDBC:
在web开发中,不可避免的地要使用数据库来存储和管理数据。为了在java语言中提供数据库访问的支持,Sun公司于1996年提供了一套访问数据的标准Java类库,即JDBC。
JDBC的全称是Java数据库连接(Java Database connect),它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系数据库,并使用SQL语句来完成对数据库中数据的查询、更新和删除等操作。
JDBC的实现包括三部分:
(1)JDBC驱动管理器:负责注册特定的JDBC驱动器,主要通过java.sql. Driver Manager类实现。
(2)JDBC驱动器API:由Sun公司负责制定,其中最主要的接口是java.sql. Driver接口。
(3)JDBC驱动器:它是一种数据库驱动,由数据库厂商创建,也称为JDBC驱动程序JDBC驱动器实现了JDBC驱动器API,负责与特定的数据库连接,以及处理通信细节。
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文件代码的,但是一直提示有非法字符,排查不出来,就贴张图吧