9. JDBC:JDBC接口和类,管理事务,数据库连接池,JDBC Tempate

这篇博客详细介绍了JDBC的相关内容,包括JDBC接口和类的详解,如驱动管理对象、数据库连接、SQL执行及结果集处理。此外,还探讨了JDBC如何管理事务,并重点讲解了数据库连接池技术,如c3p0和Druid的配置与使用。最后,文章展示了Spring JDBC的JdbcTemplate如何简化数据库操作,提供了具体的代码示例。
摘要由CSDN通过智能技术生成

1.JDBC

Java DataBase Connectivity:JAVA语言操作数据库。

JDBC是官方定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商实现这个接口,提供数据据驱动jar包。我们可以使用这套接口JDBC编程,真正执行的代码是驱动jar包中的实现类。

JDBC定义了可以操作所有关系型数据库的规则(接口)。

java程序	---		JDBC实现类(数据库驱动)		---		数据库厂商
  • JDBC快速入门,使用步骤
  1.导入驱动jar包
      1.复制jar包到模块自建目录libs下		
      2.右键 --> add as library
  2.注册驱动
      【错误:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
          5.x.xx的注册驱动语句是: com.mysql.jdbc.Driver ;8.x.xx的是: com.mysql.cj.jdbc.Driver 。】
      【错误:Exception in thread "main" java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specific time zone value if you want to utilize time zone support.
              https://blog.csdn.net/weixin_38888926/article/details/894761443.获取数据库连接对象 Connection
  4.定义SQL语句
  5.获取执行SQL语句的对象 statment
  6.执行sql,接收返回结果。
  7.处理结果。
  8.释放资源。
 jdbc使用步骤
  		// 1.导入驱动jar包
        // 2.注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");	//可以省略不写
        // 3.获取数据库连接对象
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_test1?serverTimezone=GMT%2B8", "root", "root");
        // 4.定义sql语句
        String sql = "update account set balance = 500 where id = 1 ";
        // 5.获取执行sql的对象。
        Statement stmt = conn.createStatement();
        // 6.执行sql
        int count = stmt.executeUpdate(sql);
        // 7.处理结果
        System.out.println(count);
        // 8.释放资源
        stmt.close();
        conn.close(); 

2. JDBC接口和类详解

1. JDBC遇到的类

JDBC中遇到的对象:
      1.DriverManager:驱动管理对象
      2.Connection: 数据库连接对象
      3.Statment:执行sql的对象。静态sql
      4.ResultSet:结果集对象
      5.PreparedStatment:执行sql的对象。动态sql

2. DriverManager:驱动管理对象

1.DriverManager:
  	1.1注册驱动。告诉程序该使用哪一个数据驱动。jar包中有注册驱动,所以第一部分加载类字节码文件进内存代码部分可以省略。
    1.2获取数据库连接
          static Connection DriverManager.getConnection(String url, String user, String password) 
          url:指定连接路径	jdbc:mysql:/localhost:3306//db1   【localhost:3306】可省略
          user:用户名
          passwors:密码
          Connection conn = DriverManager.getConnection("jdbc:mysql:///db_test1?serverTimezone=GMT%2B8", "root", "root");	//连接本机的mysql服务时,路径可以简写

3. Connection: 数据库连接对象

2.Connection: 
  	 	2.1获取指向sql语句的对象。
              Statement Connection.createStatement() // 创建一个 Statement 对象来将 静态SQL 语句发送到数据库。
              PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES SET SALARY = ? WHERE ID = ?");	
              //动态SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。 
  
          2.2管理事务
              2.2.1开启事务: void setAutoCommit(boolean autoCommit) // 设置参数为false,关闭自动提交。将此连接的自动提交模式设置为给定状态。 
              2.2.2提交事务 void commit() // 使所有上一次提交/回滚后进行的更改成为持久更改,并释放此 Connection 对象当前持有的所有数据库锁。 
              2.2.3回滚事务 void rollback() //取消在当前事务中进行的所有更改,并释放此 Connection 对象当前持有的所有数据库锁。 

4. Statment:执行sql的对象。静态sql

3.Statement:
 		boolean execute() //在此 PreparedStatement 对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句。 
		int executeUpdate() // 在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句,比如 INSERT、UPDATE 或 DELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL (create alter drop)语句。 
        ResultSet executeQuery() // 在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。 
            
        练习:account表中创建一条信息
            account表中删除一条信息
            创建一个表

5. ResultSet:结果集对象

4.ResultSet:结果集对象,封装查询结果。
    boolean	next()	//将光标从当前位置向前移动一行。
    getXxx(参数):获取数据
    	Xxx代表数据类型。如 int getInt(para);
		参数有两种情况:int / string
            int:代表列的编号,1开始。getString(i)	//获取第i列的数据
            String:代表列的名称。
     正确的遍历方法:
      while (rs.next()){
     //判断游标是否到了最后一行
          int i = rs.getInt(1);
          String name = rs.getString("name");
          double v = rs.getDouble(3);
          System.out.println(i + " === " + name + " === " + v);
		}
JDBC练习select语句:
    查询练习:查询emp表数据,将其封装为对象。然后打印。
    
抽取JDBC工具类:JDBCUtiles
    1.抽取方法,创建驱动
    2.抽取方法,建立连接
    	* 不想传参,保证工具类的通用性。
    	解决方法:配置文件
    		jdbc.properties   记录url=   	user= 		password= 
    3.抽取方法,释放资源

演示代码:
配置文件:jdbc.properties

url=jdbc:mysql://localhost:3306/db1
user=root
password=root
driver=com.mysql.jdbc.Driver

JDBCUtils工具类:

package demo03JdbcUtils;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

public class Jdbcutil {
   
    private static String url;
    private static String user;
    private static String password;
    private static String driver;

    static {
   
        try {
   

            // 读取资源文件,获取值

            // 1.创建properties集合类
            Properties pro = new Properties();

            //  获取src路径下文件方式
            ClassLoader classLoader = Jdbcutil.class.getClassLoader();
            URL resource = classLoader.getResource("jdbc.properties");
            String path = resource.getPath();

            // 2.加载文件
            FileReader fr = null;
            fr = new FileReader(path);
            pro.load(<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值