JDBC常用api详解
DriverManager
DriverManager是java.sql包下的一个专门用来管理驱动的一个类,它主要有两个作用:
- 注册驱动
注册驱动需要用到的registerDriver方法通过点击Driver类的源码可以发现里面有个静态代码块,随着Driver类的加载自动执行生效,不需要手动去书写
- 获取数据库连接
getConnection(String url, String user, String password)
//尝试建立与给定数据库URL的连接。
这个方法的返回值是一个connection类型
connection
connection(数据库连接对象)是一个接口,它的作用有两个:
- 获取执行sql语句的对象
satatement createstatement();
// 普通执行sql对象
preparedstatement preparestatement(sql);
//预编译sql的执行sql对象:防止sql注入
callableStatement preparecall(sql);
//执行存储过程的对象
- 管理事务
在java中开启事务的操作与在mysql里的操作有些许不同
/**
mysql 事务管理
开启事务:begin/start transaction
提交事务:commit
回滚事务:rollback
java 事务管理(connection接口提供的方法)
开启事务:setautocommit(boolean autoconmmit):true为自动提交,false为手动提交,就是开启事务
提交事务:commit();
回滚事务:rollback();
*/
Statement
Statement是一个专门用来执行sql语句的接口,它的作用主要就是用来执行SQL语句
int executeUpdate(sql);
//执行DML,DDL语句,返回值是Int类型,返回受影响的行数,执行DDL语句时执行成功也可能返回0
resultset executequery(sql);
//返回值是resultset。结果集对象
ResultSet
ResultSet是封装了DQL查询语句的结果,是使用DQL查询语言的返回值类型
ResultSet stmt executeQuery(sql);
// 执行DQL语句,返回Resultset对象
可以使用Resultset获取查询的结果
boolean next();
//1.将光标从当前位置向下移动一行
//2. 判断当前行是否为有效行,true:有效行,当前行有数据,false,无效行,当前行没有数据
//获取数据使用getxxx方法,如果表中的列为int数据,那么获取数据就是getint,String类型就是GetString,如:
* getXxx(int count):得到数据类型为Xxx的第count列数据
* getXxx(String name):得到数据类型为Xxx的列名为name的数据
把查询到的数据添加到集合:
package com.jdbc;
public class Acction {
private int id;
private String name;
private String birthday;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "Acction{" +
"id=" + id +
", name='" + name + '\'' +
", birthday='" + birthday + '\'' +
'}';
}
}
package com.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class JDBCDemo02 {
public static void main(String[] args)throws Exception {
//第一步:建立数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1?useSSL=false","root","1234");
//第二步:编写sql语句
String sql1="select * from student";
//第三步:创建执行对象
Statement stat = conn.createStatement();
//第四步:用对象执行sql
ResultSet resultSet = stat.executeQuery(sql1);
//第五步:创建集合
List<Acction> list = new ArrayList();
while (resultSet.next()){
//第六步:创建数据保存对象
Acction acction = new Acction();
int id = resultSet.getInt(1);
String name = resultSet.getString(2);
String birthday = resultSet.getString(3);
//第七步:封装属性保存到实例
acction.setId(id);
acction.setName(name);
acction.setBirthday(birthday);
//第八步:把封装好的数据添加到集合
list.add(acction);
}
System.out.println(list);
//第九步:释放资源
resultSet.close();
stat.close();
conn.close();
}
}
PreparedStatement
preparedStatement是statement的加强版本,它主要可以实现两个功能:
-
完成SQL语句的预编译功能
-
防止Sql注入
// 连接mysql服务器 Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1? useSSL=false",user,password); //定义sql语句 String sql1="select * from student where name = ?and password = ?"; //创建执行对象 PreparedStatement preparedStatement = conn.prepareStatement(sql1); //给?占位符设置值 preparedStatement.setString(1,user); preparedStatement.setString(2,password); //执行sql语句 ResultSet resultSet = preparedStatement.executeQuery(); //循环查看输出结果 while(resultset.next()){ resultset.getString(1); resultset.getstring(2); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?