对于工具类提供获取连接的方法,关闭资源的方法。
1.配置文件config.properties:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/day10
user=root
password=169500
2.工具类JDBCUtils:读取文件使用类字节码的方式读取
package cn.itheima.utils;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBCUtils {
private static Properties pro=null;
static{
pro=new Properties();
try {
pro.load(new FileReader(JDBCUtils.class.getClassLoader().getResource("config.properties").getPath()));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private JDBCUtils(){
}
public static Connection getConnection(){
try {
Class.forName(pro.getProperty("driver"));
return DriverManager.getConnection(pro.getProperty("url"), pro.getProperty("user"), pro.getProperty("password"));
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();
}
}
public static void closeResource(ResultSet rs,Statement sta, Connection con){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
rs=null;
}
}
if(sta!=null){
try {
sta.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
sta=null;
}
}
if(con!=null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
con=null;
}
}
}
}
3.使用工具类进行查询:
package cn.itheima.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import cn.itheima.utils.JDBCUtils;
public class JDBCDDemo3 {
private static Connection con=null;
private static Statement sta=null;
private static ResultSet rs=null;
public static void main(String[] args) {
try {
con =JDBCUtils.getConnection();
sta=con.createStatement();
rs=sta.executeQuery("select * from user");
while(rs.next()){
String name=rs.getString("name");
System.out.println(name);
}
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException();
}finally{
JDBCUtils.closeResource(rs, sta, con);
}
}
}
4.运行结果:
我这里想解释的是ResultSet的next()方法。
rs可以理解为一个游标。其实就是指在了一张查询出来的表的前面。如果下面还有下移....知道没有。
这里一定要注意一张已经查询出来的表:
while(rs.next)整个表的前面
if(rs.next)查询完的数据,如果已经查询出来了一条数据那么这一条数据就可以理解为一张表但是就一条数据.如果查出两条数据,这两条数据也可理解成是一个表,这个有游标指在了这张表的前面。