JDBC超详细笔记

String username = sc.next();

System.out.println(“请输入密码:”);

String password = sc.next();

//1.注册驱动

Class.forName(“com.mysql.jdbc.Driver”);

//2.获得连接

String url = “jdbc:mysql://localhost:3306/companydb?useUnicode = true&characterEncoding = utf8”;

Connection connection = DriverManager.getConnection(url,“root”,“root”);

//3.获取执行的对象

String sql =“select * from user where username = ? and password = ?”;

//预编译

PreparedStatement preparedStatement = connection.prepareStatement(sql);

//为SQL语句赋值

preparedStatement.setString(1,username);

preparedStatement.setString(2,password);

//4.执行SQL语句

ResultSet resultSet = preparedStatement.executeQuery();

//5.处理结果

if(resultSet.next()){

System.out.println(“登录成功”);

}else{

System.out.println(“登录失败”);

}

//6.释放资源

resultSet.close();

preparedStatement.close();

connection.close();

}

}

8. 封装工具类

============================================================================

8.1 jdbc.properties


  • 在src目录下新建jdbc.properties文件

driver = com.mysql.jdbc.Driver

url = jdbc:mysql://localhost:3306/db0707?useUnicode=true&characterEncoding=utf8

user = root

password = root

8.2 JDBCUtils.java


  • 工具类的实现

public class JDBCUtils {

//定义成员

private static String url;

private static String user;

private static String password;

private static String driver;

static{

try {

Properties prop = new Properties();

ClassLoader classLoader = JDBCUtils.class.getClassLoader();

URL urlPath = classLoader.getResource(“jdbc.properties”);

String path = urlPath.getPath();

prop.load(new FileReader(path));

url = prop.getProperty(“url”);

user = prop.getProperty(“user”);

password = prop.getProperty(“password”);

//加载驱动

Class.forName(prop.getProperty(“driver”));

} catch (Exception e) {

e.printStackTrace();

}

}

//获取数据库连接对象

public static Connection getConnection(){

try {

Connection conn = DriverManager.getConnection(url, user, password);

return conn;

} catch (SQLException e) {

e.printStackTrace();

}

return null;

}

//释放资源(DDL、DML)

public static void close(Statement stmt,Connection conn){

if(stmt != null){

try {

stmt.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if(conn!=null) {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

//针对DQL语句的关闭

public static void close(ResultSet rs,Statement stmt,Connection conn) {

if(rs!=null) {

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if(stmt!=null) {

try {

stmt.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if(conn!=null) {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

9. ORM(Object Relational Mapping)

=====================================================================================================

ORM(Object Relational Mapping)

从数据库查询到的结果集(ResultSet)在进行遍历时,逐行遍历,取出的都是零散的数据。在实际应用开发中,我们需要将零散的数据进行封装整理;

9.1 创建表


CREATE TABLE user(

id INT PRIMARY KEY,#主键

username VARCHAR(20) NOT NULL,

password VARCHAR(20) NOT NULL,#非空

sex CHAR(2),

email VARCHAR(50) NOT NULL,

address VARCHAR(20) NOT NULL

)CHARSET = utf8;

INSERT INTO user (id,username,password,sex,email,address)

VALUES (1001,‘kaka’,‘123’,‘男’,‘123456789@qq.com’,‘陕西省’);

9.2 封装工具类


/**

  • 数据库工具类

  • 1.获取连接 connection

  • 2.释放资源

  • 可跨平台方案

*/

import java.io.*;

import java.sql.*;

import java.util.Properties;

public class DBUtils{

//配置文件集合 永远不变

private static final Properties properties = new Properties();

static {

try {

//使用类自带的流

//首次使用工具类,触发类加载

InputStream is = DBUtils.class.getResourceAsStream(“/db.properties”);

//通过流将配置信息的内容分割成键值对

//将is流中的配置文件信息,加载到集合中

properties.load(is);

Class.forName(properties.getProperty(“driver”));

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

//获得连接

public static Connection getConnection(){

Connection connection = null;

try {

connection = DriverManager.getConnection(properties.getProperty(“url”),properties.getProperty(“username”),properties.getProperty(“password”));

} catch (SQLException e) {

e.printStackTrace();

}

return connection;

}

//释放资源

public static void closeAll(Connection connection, Statement statement, ResultSet resultSet) {

try {

if (resultSet != null) {

resultSet.close();

}

if (statement != null) {

statement.close();

}

if (connection != null) {

connection.close();

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}

9.3 User类


public class User {

private int id;

private String username;

private String password;

private String sex;

private String email;

private String address;

public User(){}

@Override

public String toString() {

return “User{” +

“id=” + id +

“, username='” + username + ‘’’ +

“, password='” + password + ‘’’ +

“, sex='” + sex + ‘’’ +

“, email='” + email + ‘’’ +

“, address='” + address + ‘’’ +

‘}’;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

public User(int id, String username, String password, String sex, String email, String address) {

this.id = id;

this.username = username;

this.password = password;

this.sex = sex;

this.email = email;

this.address = address;

}

}

9.4 OrmSelect类


/**

  • ORM查询

*/

import java.sql.*;

public class OrmSelect {

public static void main(String[] args) {

Connection connection = DBUtils.getConnection();

String sql = “select id,username,PASSWORD,sex,email,address from user;”;

PreparedStatement preparedStatement = null;

ResultSet resultSet = null;

try {

preparedStatement = connection.prepareStatement(sql);

resultSet = preparedStatement.executeQuery();

//拿到每一行数据

while (resultSet.next()) {

//拿到每一列的数据

User user = new User();

int id = resultSet.getInt(“id”);

String username = resultSet.getString(“username”);

String password = resultSet.getString(“password”);

String sex = resultSet.getString(“sex”);

String email = resultSet.getString(“email”);

String address = resultSet.getString(“address”);

//将零散的数据,封装在User对象里

user.setId(id);

user.setUsername(username);

user.setPassword(password);

user.setSex(sex);

user.setEmail(email);

user.setAddress(address);

System.out.println(user);

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

DBUtils.closeAll(connection, preparedStatement, resultSet);

}

}

}

10. DAO(Data Access Object)

===============================================================================================

DAO(Data Access Object)数据访问对象:将所有对同一张表的操作都封装在一个XXXDaoImpl对象中、根据增删改查的不同功能,实现具体的方法(insert,update,delete,select,selectAll);

  • 对于任何一张表中的数据进行操作时(增、删、改、查);应将对于一张表的所有操作统一封装在一个数据访问对象中为了实现重用;

10.1 创建表


CREATE TABLE employee(

id INT PRIMARY KEY AUTO_INCREMENT,

NAME VARCHAR(30),

sex VARCHAR(2),

salary DOUBLE

) CHARSET = utf8;

10.2 创建Employee类


public class Employee {

private int id;//工号

private String name;//名字

private String sex;//性别

private double salary ;//工资

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 getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public double getSalary() {

return salary;

}

public void setSalary(double salary) {

this.salary = salary;

}

@Override

public String toString() {

return “employee [id=” + id + “, name=” + name + “, sex=” + sex + “, salary=”

  • salary + “]”;

}

public Employee() {

super();

// TODO Auto-generated constructor stub

}

public Employee(int id, String name, String sex, double salary) {

super();

this.id = id;

this.name = name;

this.sex = sex;

this.salary = salary;

}

}

10.3 封装工具类


见第7个板块

10.4 UserDaoImpl


/*

*对数据库中emp;oyee表的一系列操作(增删改查)

*实现增删改查

*/

public class UserDaoImpl {

private Connection conn = null;

private PreparedStatement stmt = null;

private ResultSet rs = null;

//增加

public int insert(Employee emp){

try {

//数据库连接对象

conn = JDBCUtils.getConnection();

//编写SQL语句

String sql = “insert into employee (id,name,sex,salary) values(?,?,?,?);”;

//预编译对象

stmt = conn.prepareStatement(sql);

//执行更新

stmt.setInt(1, emp.getId());

stmt.setString(2, emp.getName());

stmt.setString(3, emp.getSex());

stmt.setDouble(4, emp.getSalary());

int i = stmt.executeUpdate();

return i;

} catch (Exception e) {

e.printStackTrace();

} finally{

JDBCUtils.close(stmt, conn);

}

return 0;

}

//删除

public int delete (int id){

conn = JDBCUtils.getConnection();

String sql = “delete from employee where id = ?”;

try {

stmt = conn.prepareStatement(sql);

//获取id

stmt.setInt(1, id);

return stmt.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();

}finally{

JDBCUtils.close(stmt, conn);

}

return 0;

}

//修改

public int update(Employee emp){

conn = JDBCUtils.getConnection();

String sql = “update employee set name = ?,sex = ?,salary = ? where id = ?”;

try {

stmt = conn.prepareStatement(sql);

//执行更新

stmt.setString(1, emp.getName());

stmt.setString(2, emp.getSex());

stmt.setDouble(3, emp.getSalary());

stmt.setInt(4, emp.getId());

return stmt.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();

}finally{

JDBCUtils.close(stmt, conn);

}

return 0;

}

//查询

public List selectAll(){

conn = JDBCUtils.getConnection();

String sql = “select id,name,sex,salary from employee”;

List empList = new ArrayList();

try {

stmt = conn.prepareStatement(sql);

rs = stmt.executeQuery();

while(rs.next()){

int id = rs.getInt(“id”);

String name = rs.getString(“name”);

String sex = rs.getString(“sex”);

double salary = rs.getDouble(“salary”);

Employee emp = new Employee(id, name, sex, salary);

//每封装完一个对象,添加到集合当中

empList.add(emp);

}

return empList;

} catch (SQLException e) {

e.printStackTrace();

}finally {

JDBCUtils.close(stmt, conn);

}

return null;

}

}

10.5 测试类


public class JDBCTest {

public static void main(String[] args) {

//新增

UserDaoImpl udi = new UserDaoImpl();

Employee emp = new Employee(3,“wangwu”,“nv”,4555);

int result = udi.insert(emp);

if(result > 0){

System.out.println(“success”);

}else{

System.out.println(“defeat”);

}

//删除

int result = udi.delete(3);

System.out.println(result);

//修改

Employee emp = new Employee(1,“kaka”,“m”,12345);

int result = udi.update(emp);

System.out.println(result);

//查询

List empList = udi.selectAll();

empList.forEach(System.out::println);

}

}

11. 日期类型

============================================================================

  • java.util.Date
java语言常规应用层面的日期类型;可以通过字符串创建对应的时间对象;**无法直接通过JDBC插入数据库**
  • java.sql.Date
不可以通过字符串创建对应的时间对象;只能通过毫秒值创建对象;**可以直接通过JDBC插入数据库**

sql赋util可以,util赋sql不行,因为sql是util的子类;

11.1 日期格式化工具


  • SimpleDateFormat 日期格式化

//自定义一个时间

String str = “2020-02-02”;

//日期转换将字符串转为 java.util.Date

SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);

//将日期字符串转换成 util.Date类型

java.util.Date utilDate = sdf.parse(str);

System.out.println(utilDate);

11.2 日期工具类


/**

  • 日期转换

  • 字符串转UtilDate

  • 字符串转SqlDate

  • utilDate转成SqlDate

*/

import java.text.ParseException;

import java.text.SimpleDateFormat;

public class DateUtils {

private static final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(“yyyy-MM-dd”);

//字符串转Util

public static java.util.Date strToUtilDate(String str) {

try {

return simpleDateFormat.parse(str);

} catch (ParseException e) {

e.printStackTrace();

}

return null;

}

//字符串转sql(不常用)

public static java.sql.Date strToSqlDate(String str){

SimpleDateFormat simpleDateFormat = new SimpleDateFormat(“yyyy-MM-dd”);

try {

java.util.Date date = simpleDateFormat.parse(str);

return new java.sql.Date(date.getTime());

} catch (ParseException e) {

e.printStackTrace();

}

return null;

}

//util转sql

public static java.sql.Date utilToSql(java.util.Date date){

return new java.sql.Date(date.getTime());

}

}

11.3 测试类


public static void main(String[] args) throws ParseException{

//1.java.util.Date

// 当前系统时间

System.out.println(new java.util.Date());

//自定义一个时间

String str = “2020-02-02”;

//日期转换将字符串转为 java.util.Date

SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);

//将日期字符串转换成 util.Date类型

java.util.Date utilDate = sdf.parse(str);

System.out.println(utilDate);

//sql.Date 需要毫秒值,来构建一个日期

java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());

System.out.println(sqlDate);

java.util.Date date = DateUtils.strToUtilDate(“2020-03-28”);

System.out.println(date);

java.sql.Date date2 = DateUtils.utilToSql(date);

System.out.println(date2);

}

}

12. JDBC事务

==============================================================================

使用JDBC操作事务,在对业务进行操作的时候,将业务操作使用事务进行管理,操作结果要么同时成功,要么同时失败;

  • void setAutoCommit(boolean autoCommit):
参数是 true 或 false 如果设置为 false,表示关闭自动提交,相当于开启事务
  • void commit():提交事务
  • void rollback():回滚事务

12.1 开发步骤


  1. 获取连接
  1. 开启事务
  1. 获取到 PreparedStatement
  1. 使用 PreparedStatement 执行两次更新操作
  1. 正常情况下提交事务
  1. 出现异常回滚事务
  1. 关闭资源

12.2 创建表


CREATE TABLE account(

id INT PRIMARY KEY AUTO_INCREMENT,

NAME VARCHAR(10),

balance DOUBLE

);

– 插入账户

INSERT INTO account (NAME , balance) VALUE (‘zhangsan’,1000);

INSERT INTO account (NAME , balance) VALUE (‘lisi’,1000);

12.3 加入事务处理


public class JDBCDemo {

public static void main(String[] args) {

Connection conn = null ;

PreparedStatement ps1 = null ;

PreparedStatement ps2 = null ;

try {

//获取数据库的连接对象

conn = JDBCUtils.getConnection() ;

//开启事务 //Mysql:中开启 start transaction ;

conn.setAutoCommit(false); //false开启收到提交 ,true自动提交

//准备sql语句

String sqlStr1 = “update account set balance = balance - ? where id = ?” ;

String sqlStr2 = “update account set balance = balance + ? where id = ?” ;

//使用连接对象获取预编译对象,给数据库发送sql进行预编译操作

ps1 = conn.prepareStatement(sqlStr1) ;

ps2 = conn.prepareStatement(sqlStr2) ;

//分别设置参数

ps1.setDouble(1, 500);

ps1.setInt(2, 1);

ps2.setDouble(1, 500);

ps2.setInt(2, 2);

//进行更新

int count1 = ps1.executeUpdate() ;

System.out.println(count1);

System.out.println(sqlStr1);

//模拟中间有问题

int x = 3 / 0 ; //程序问题了,程序结束

int count2 = ps2.executeUpdate() ;

System.out.println(count2);

System.out.println(sqlStr2);

//提交事务

conn.commit();

} catch (SQLException e) {

//回滚 //如果程序问题了,执行catch语句

if(conn!=null) {

try {

conn.rollback();

} catch (SQLException e1) {

e1.printStackTrace();

}

}

e.printStackTrace();

}finally {

JDBCUtils.close(ps1, conn);

JDBCUtils.close(ps2, null);

}

}

}

12.4 DBUtils封装事务控制


//开启事务

public static void begin(){

Connection connection = getConnection();

try {

connection.setAutoCommit(false);

} catch (SQLException e) {

e.printStackTrace();

}

}

//提交事务

public static void commit(){

Connection connection = getConnection();

try {

connection.commit();

} catch (SQLException e) {

e.printStackTrace();

}finally {

DBUtils.closeAll(connection,null,null);

}

}

//回滚事务

public static void rollback(){

Connection connection = getConnection();

try {

connection.rollback();

} catch (SQLException e) {

e.printStackTrace();

}finally {

DBUtils.closeAll(connection,null,null);

}

}

13.连接池

=========================================================================

JDBC每次连接数据库,都要获得一个连接对象。每次创建一个连接对象,都是一个较大的资源,如果在连接量较大的场景下,会极大的浪费资源,容易内存溢出。

连接池就是一个容器,创建好数据库连接对象之后,将这些连接对象存储到容器(初始化)中,每次使用连接对象之后,而是将连接对象归还到连接池中,等待下一次利用;

13.1 c3p0连接池


Java中提供了一个接口DataSource,通过实现该接口,可以创建连接池

使用连接池:c3p0: 需要提供的对应的mysql的c3p0相关的jar包

导入:c3p0-0.9.5.2.jar核心jar包以及它相关的依赖jar包 mchange-commons-java-0.2.12.jar

13.2 Druid(德鲁伊)


Druid 是目前比较流行高性能的,分布式列存储

一、亚秒级查询

二、实时数据注入

三、可扩展的PB级存储

四、多环境部署

五、丰富的社区

13.2.1 Druid配置

  • 创建druid.properties 配置文件
  • 引入druid-1.0.9.jar包
  • 需要借助工厂类DruidDataSourceFactory 创建具体的连接池
  • 获取DataSouce:连接池对象(接口) 通过连接池获取数据库的连接
  • Connection getConnection() throws SQLException;

13.2.2 database.properties 文件配置

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/db0708?useUnicode=true&characterEncoding=utf8

username=root

password=root

#初始化连接

initialSize=10

#最大连接数量

maxActive=30

#最小空闲连接

minIdle=5

#超时等待时间以毫秒为单位

maxWait=5000

13.2.3 连接池工具类

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Properties;

import javax.sql.DataSource;

import com.alibaba.druid.pool.DruidDataSourceFactory;

/*

*将Druid连接池的获取通过工具类进行封装使用连接池创建连接对象(每次close()都会归还到连接池中),

*操作DDL,DML,DQL都一样

*/

public class JDBCUtils {

//获取数据库连接池

private static DataSource ds;

//提供静态代码块

//加载配置文件

static{

try{

//创建Properties集合类对象

Properties prop = new Properties();

//加载配置文件

InputStream inputStream = JDBCUtils.class.getClassLoader().getResourceAsStream(“druid.properties”);

//加载

prop.load(inputStream);

inputStream.close();

//创建连接池对象

ds = DruidDataSourceFactory.createDataSource(prop);

} catch(IOException e){

e.printStackTrace();

}catch(Exception e){

e.printStackTrace();

}

}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

读者福利

分享一份自己整理好的Java面试手册,还有一些面试题pdf

不要停下自己学习的脚步

字节跳动的面试分享,为了拿下这个offer鬼知道我经历了什么

字节跳动的面试分享,为了拿下这个offer鬼知道我经历了什么

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Properties;

import javax.sql.DataSource;

import com.alibaba.druid.pool.DruidDataSourceFactory;

/*

*将Druid连接池的获取通过工具类进行封装使用连接池创建连接对象(每次close()都会归还到连接池中),

*操作DDL,DML,DQL都一样

*/

public class JDBCUtils {

//获取数据库连接池

private static DataSource ds;

//提供静态代码块

//加载配置文件

static{

try{

//创建Properties集合类对象

Properties prop = new Properties();

//加载配置文件

InputStream inputStream = JDBCUtils.class.getClassLoader().getResourceAsStream(“druid.properties”);

//加载

prop.load(inputStream);

inputStream.close();

//创建连接池对象

ds = DruidDataSourceFactory.createDataSource(prop);

} catch(IOException e){

e.printStackTrace();

}catch(Exception e){

e.printStackTrace();

}

}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-RxjbThEE-1712036165117)]

[外链图片转存中…(img-7Gg9pqBK-1712036165118)]

[外链图片转存中…(img-GBwKQGDk-1712036165118)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

读者福利

分享一份自己整理好的Java面试手册,还有一些面试题pdf

不要停下自己学习的脚步

[外链图片转存中…(img-vzlVMUs8-1712036165118)]

[外链图片转存中…(img-gE41oLo2-1712036165119)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

一、概述: JDBC从物理结构上说就是Java语言访问数据库的一套接口集合。从本质上来说就是调用者(程序员)和实现者(数据库厂商)之间的协议。JDBC的实现由数据库厂商以驱动程序的形式提供。JDBC API 使得开发人员可以使用纯Java的方式来连接数据库,并进行操作。 ODBC:基于C语言的数据库访问接口。 JDBC也就是Java版的ODBC。 JDBC的特性:高度的一致性、简单性(常用的接口只有4、5个)。 1.在JDBC中包括了两个包:java.sql和javax.sql。 ① java.sql 基本功能。这个包中的类和接口主要针对基本的数据库编程服务,如生成连接、执行语句以及准备语句和运行批处理查询等。同时也有一些高级的处理,比如批处理更新、事务隔离和可滚动结果集等。 ② javax.sql 扩展功能。它主要为数据库方面的高级操作提供了接口和类。如为连接管理、分布式事务和旧有的连接提供了更好的抽象,它引入了容器管理的连接池、分布式事务和行集等。 注:除了标出的Class,其它均为接口。 API 说明 java.sql.Connection 与特定数据库的连接(会话)。能够通过getMetaData方法获得数据库提供的信息、所支持的SQL语法、存储过程和此连接的功能等信息。代表了数据库。 java.sql.Driver 每个驱动程序类必需实现的接口,同时,每个数据库驱动程序都应该提供一个实现Driver接口的类。 java.sql.DriverManager (Class) 管理一组JDBC驱动程序的基本服务。作为初始化的一部分,此接口会尝试加载在”jdbc.drivers”系统属性中引用的驱动程序。只是一个辅助类,是工具。 java.sql.Statement 用于执行静态SQL语句并返回其生成结果的对象。 java.sql.PreparedStatement 继承Statement接口,表示预编译的SQL语句的对象,SQL语句被预编译并且存储在PreparedStatement对象中。然后可以使用此对象高效地多次执行该语句。 java.sql.CallableStatement 用来访问数据库中的存储过程。它提供了一些方法来指定语句所使用的输入/输出参数。 java.sql.ResultSet 指的是查询返回的数据库结果集。 java.sql.ResultSetMetaData 可用于获取关于ResultSet对象中列的类型和属性信息的对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值