一、概述
二、java连接数据库
2.1数据库设计
create database jdbc; use jdbc; create table test( id int primary key auto_increment, name varchar(10) ); insert into test values(1,"name1"); insert into test values(2,"name2"); insert into test values(3,"name3"); insert into test values(4,"name4"); insert into test values(5,"name5");
package edu.aeon.jdbc; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * [说明]:连接数据库 * @author aeon(qq:1584875179) * */ public class Test { public static void main(String[] args) { Connection connection=null; Statement statement=null; ResultSet resultSet=null; try { Driver driver=new com.mysql.jdbc.Driver(); DriverManager.registerDriver(driver); String url="jdbc:mysql://localhost:3306/jdbc"; String username="root"; String password="root"; connection=DriverManager.getConnection(url, username, password); statement=connection.createStatement(); String sql="select* from test"; resultSet=statement.executeQuery(sql); while(resultSet.next()){ int id=resultSet.getInt("id"); String name=resultSet.getString("name"); System.out.println(id+" "+name); } } catch (SQLException e) { e.printStackTrace(); }finally { try { if(null!=resultSet){ resultSet.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if(null!=statement){ statement.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if(null!=connection){ connection.close(); } } catch (SQLException e) { e.printStackTrace(); } } } }
数据库截图:
测试结果:
问题:什么情况下可以将一些异常代码放到一个try{}catch(){}块里面,什么情况下不可以?
前一个异常的发生可以影响到后一个,那么我们可以放到一起,如,打开数据库连接失败了,就不可能获取到语句对象,更不可能根据语句对象获取到结果集,所以把它们放到一个try{}块里面,一个发生异常,那么代码就不往下跑了,直接抛出异常!
finally里面分开放是因为,我不管你异常与否我都要关闭资源以减轻服务器的压力,即使第一个结果集关闭失败,我还想着要关闭语句对象和数据库连接对象,能关闭一个是一个,能减轻一点服务器负担就减轻一点。