JDBC
JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
JDBC库包括通常与数据库使用相关的下面提到的每个任务的API。
连接数据库
创建SQL或MySQL语句
在数据库中执行SQL或MySQL查询
查看和修改生成的记录
JDBC体系结构
JDBC API支持用于数据库访问的两层和三层处理模型,通常JDBC体系结构由两层组成:
**JDBC API:**提供了应用程序到JDBC管理器连接
**JDBC驱动程序API:**支持JDBC管理器到驱动程序连接
JDBC API使用驱动程序管理器和特定于数据库的驱动程序来提供与异构数据库的透明连接。
JDBC核心组件
**DriverManager:**此类管理数据库驱动程序列表,使用通信子协议将来自java应用程序的连接请求与适当的数据库驱动程序匹配
**Driver:**此接口处理与数据库服务器的通信,很少会直接与Driver对象进行交互 。而是使用DriverManager对象来管理这种类型的对象
**Connection:**该界面具有用于联系数据库的所有方法。连结对象表示通信上下文,即与数据库的所有通信仅通过连接对象
**Statement:**使用此接口创建的对象将SQL语句提交到数据库,除了执行存储过程之外 ,一些派生接口还接受参数。
**ResultSet:**此类处理数据库应用程序中发生的任何错误。
JDBC连接步骤
package com.kkb;
import java.sql.*;
public class Demo1 {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
//1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取连接
String username = "root";
String password = "123456";//写自己设置的密码
String url = "jdbc:mysql://localhost:3306/数据库名?serverTimezone=UTC";
connection = DriverManager.getConnection(url,username,password);
//3.定义sql,创建状态通道(进行sql语句的发送)
statement = connection.createStatement();
resultSet = statement.executeQuery("select * from employee");//executeQuery(sql)执行查询语句
//4.取出结果集信息
while (resultSet.next()){ //判断是否有下一条数据
//取出数据 resultSet.getXXX("列名"); xxx表示数据类型
System.out.println("姓名"+resultSet.getString("name")+",性别"+resultSet.getString("sex"));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
try {
//5.关闭操作
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
状态通道与与状态通道的区别
对比statement和PreparedStatement
statement属于状态通道,PreparedStatement属于预状态通道
预状态通道会先编译sql语句,再去执行,比statement效率更高
预状态通道支持占位符?,给占位符赋值的时候,位置从1开始
预状态通道可以防止sql注入,原因是预状态通道在处理值的时候以字符串的方式处理