web入门:JDBC详解(含代码实例)

本文详细介绍了Java JDBC的本质,包括它作为一套操作所有关系型数据库的接口,以及使用JDBC进行数据库操作的基本步骤。内容涵盖了注册驱动、获取连接、执行SQL语句和释放资源等关键环节。此外,还深入解析了DriverManager、Connection、ResultSet等核心对象,并展示了如何通过编写JDBC工具类来简化数据库操作,提高代码复用性。
摘要由CSDN通过智能技术生成

一.概念
jdbc的本质是一套操作所有关系型数据库的规则,即接口,只需导入数据库驱动jar包,就可以使用这套接口对数据库进行操作
二.基本步骤
1.导入驱动jar包 mysql-connector-java-5.1.37-bin.jar(注意:若mysql版本在8以上,就导入8以上的jar包),将jar包导入到web/WEB-INF/lib目录下
jar包的下载和详细说明.
2.注册驱动

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

3.获取数据库连接

Connectionconn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/db1”,“root”,“password”);

4.定义sql语句

String sql = “”;

5.获取执行sql语句的对象Statement或者PreparedStatement

(1)Statement中提供了三个方法执行sql
1.executeQuery():用于产生单个结果集的语句,若select语句
2.executeUpdate():用于执行insert,update,delete语句以及sql的DDL语句(如:create table和drop table),返回值是受影响的行数
3.execute():用于返回多个结果集,多个更新计数,或二者组合的语句
(2)PreparedStatement继承了Statement对象,可以防止sql注入等安全问题,且三个方法的作用于Statement一致

6.使用上述方法执行sql语句
7.释放资源

三.详解各个对象
1.DriverManager:驱动管理对象
*功能:
(1)注册驱动:高索程序该使用哪一个数据库驱动jar包

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

(2)获取数据库连接

static Connection getConnection(String url,String user,String
password)

参数:
1.url:指定的连接路径:jdbc:mysql://ip地址:端口号(3306)/数据库名称
2.user:用户名 password:密码

2.Connection:数据库连接对象
(1)功能:
*获取执行sql的对象Statement或者PreparedStatement
*管理事务:开启,提交,回滚
3.ResultSet:结果集对象,封装查询结果

*boolean next():游标向下移动一行,判断当前行是否是最后一行末尾(即判断是否有数据),如果是最后一行,则返回 false,否则返回 true
*getXxx(参数):获取数据 (1)Xxx:代表数据类型,如getInt(),getString() (2)参数:
1.int:代表列的编号,从1开始,如:getString(1)
2.String:代表名称,如:getDouble(“balance”)

例子:获取ResultSet对象rs中的数据

while(rs.next()){
	int id = rs.getInt(1);
	String name = rs.getString("name");
	double balance = rs.getDouble(3);
}

四.jdbc工具类
由于jdbc的操作过程需要好几行代码且都需要重复,所以可以从中抽取出冗余代码编写成一个工具类
*代码实现:

public class JDBCUtils {
	    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 classLoader = JDBCUtils.class.getClassLoader();
	            URL res  = classLoader.getResource("jdbc.properties");
	            String path = res.getPath();
	            System.out.println(path);///D:/IdeaProjects/itcast/out/production/day04_jdbc/jdbc.properties
	            //2. 加载文件
	           // pro.load(new FileReader("D:\\IdeaProjects\\itcast\\day04_jdbc\\src\\jdbc.properties"));
	            pro.load(new FileReader(path));
	
	            //3. 获取数据,赋值
	            url = pro.getProperty("url");
	            user = pro.getProperty("user");
	            password = pro.getProperty("password");
	            driver = pro.getProperty("driver");
	            //4. 注册驱动
	            Class.forName(driver);
	        } catch (IOException e) {
	            e.printStackTrace();
	        } catch (ClassNotFoundException e) {
	            e.printStackTrace();
	        }
	    }
	
	
	    /**
	     * 获取连接
	     * @return 连接对象
	     */
	    public static Connection getConnection() throws SQLException {
	
	        return DriverManager.getConnection(url, user, password);
	    }
	
	    /**
	     * 释放资源
	     * @param stmt
	     * @param conn
	     */
	    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();
	            }
	        }
	    }
	
	
	    /**
	     * 释放资源
	     * @param stmt
	     * @param conn
	     */
	    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();
	            }
	        }
	    }
	
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值