《JDBC_API》

《JDBC_API》

<大纲>

1.DriverManager

2.Connection

3.Statement

4.ResultSet

5.资源的释放

1.DriverManager(驱动管理类)

1.注册驱动

  • DriverManager.registerDriver(new Driver());

这个代码会导致驱动注册两次

因为在Driver这个类里面有一个静态代码块负责注册驱动

即当加载驱动,就会自动注册驱动

}class.forName(“com.mysql.jdbc.Driver”);

实际开发中使用这个代码加载驱动,就会自动注册驱动

2.获得连接

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

  • jdbc :协议
  • mysql:子协议
  • localhost:IP地址、主机名
  • 3306:端口号
  • 本机mysql的url简写: jdbc:mys://jdbc

2.Connection

1.创建执行SQL语句的对象

  • Statement stmt = conn.createStatement();

执行SQL语句,有SQL注入的漏洞存在,将SQL语句发送到数据库

  • Statement stmt = conn.createStatement();

预编译、执行SQL语句,解决SQL注入的漏洞,将参数化的SQL语句发送到数据库

  • CallableStatement stmt = conn.prepareCall(String sql);

执行SQL中的存储过程

2.进行事务的管理

进行多个操作,必须保证多个操作在同一事务管理下

  • setAutoCommit(boolean autoCommit):设置事务是否自动提交
  • commit():事务提交
  • rollback():事务回滚

3.Statement

1.执行SQL语句

  • boolean execute(String sql):执行select语句返回true,否则返回false
  • ResultSet executeQuery(String sql):执行SQL中的select语句
  • int executeUpdate(String sql):执行SQL中的select语句

2.执行批处理操作

  • addBatch(String sql):添加到批处理操作
  • executeBatch():执行批处理操作
  • clearBatch():清空批处理操作

4.ResultSet(结果集)

对查询语句(select)查询的结果的封装

主要方法

  • next():移动光标到下一行,最开始光标指向第一行之前,用来判断结果集内部还有数据没
  • 根据不同类型的数据可以使用getXXX()获取数据
  • 通用的获取数据的方法getObject()

5.资源的释放

  • JDBC程序运行完后,切记要释放在运行过程中,创建的那些与数据库进行交互的对象,通常是ResultSet,Statement,Connection。

  • 特别是Connection对象,它是非常稀有的资源,这个连接对象有最大的访问个数,用完之后必须马上释放,如果不及时、正确的关闭,极易导致系统崩塌。

  • Connection对象的使用原则是尽量晚创建、早释放。

    下面是一个标准释放资源的代码

    package com.imooc.jdbc.demo1;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import org.junit.Test;
    
    import com.mysql.jdbc.Driver;
    
    public class JDBCDemo1 {
    	
    	@Test
    	/**
    	 * JDBC资源的释放
    	 */
    	public void demo2(){
    		Connection conn = null;
    		Statement stmt = null;
    		ResultSet rs = null;
    		try {
    			// 1.加载驱动
    //			DriverManager.registerDriver(new Driver());// 会导致驱动注册两次。
    			Class.forName("com.mysql.jdbc.Driver"); 
    			// 2.获得连接
    			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbctest", "root", "abc");
    			// 3.创建执行SQL语句的对象,并且执行SQL
    			// 3.1创建执行sql的对象
    			String sql = "select * from user";
    			stmt = conn.createStatement();
    			// 3.2执行sql
    			rs = stmt.executeQuery(sql);
    			while(rs.next()){
    				int uid = rs.getInt("uid");
    				String username = rs.getString("username");
    				String password = rs.getString("password");
    				String name = rs.getString("name");
    				
    				System.out.println(uid+"   "+username+"   "+password+"   "+name);
    			}
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally{
    			// 4.释放资源,无论有没有异常,都会执行释放资源的代码,这一段可以封装为一个方法
    		    if (rs != null) {
    		        try {
    		            rs.close();
    		        } catch (SQLException sqlEx) { // ignore 
    		        	
    		        }
    
    		        rs = null;
    		    }
    		    
    		    if(stmt != null){
    		    	try {
    					stmt.close();
    				} catch (SQLException e) {
    					e.printStackTrace();
    				}
    		    	stmt = null;
    		    }
    		    
    		    if(conn != null){
    		    	try {
    					conn.close();//程序不认识这个对象
    				} catch (SQLException e) {
    					e.printStackTrace();
    				}
    		    	conn = null;// 垃圾回收机制更早回收对象
    		    }
    		}
    	}
    
    	
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值