简单了解JDBC


首先我们通过下面这张图来了解JDBC操作数据库的过程并熟悉下过程中用到的几个常用类。  

简单了解JDBC

简单了解JDBC

如图所示,java程序通过加载DriverManager和sql数据库建立connection之后,通过Statement或者通过PreparedStatement携带sql语句到sql数据库执行,并返回ResultSet集合给java程序。下面简单说下这几个常用的类。

简单了解JDBC

DriverManager :
管理一组JDBC 驱动程序的基本服务,作用与用户和驱动程序之间。可以通过getConnection()方法获取Connection实例。
Connection:
数据库链接的实例,获取数据库链接后才能对数据进行操作。
Statement/PreparedStatement:
PreparedStatement继承了statement,都用于执行动态SQL语句。通过PreparedStatement执行,将会预编译,并保存到PreparedStatement实例中,可反复执行。
ResultSet:
用来临时存放数据库查询的结果集

简单例子:

1.创建JDBC建立connection的配置文件jdbc.properties 

jdbc.dirver = com.mysql.jdbc.Driver
jdbc.url =  jdbc:mysql://10.158.224.15:32759/test?useUnicode=true&characterEncoding=utf-8
jdbc.username = root
jdbc.password = 123456
2.创建读取配置文件的PropertyUtil文件:

package utils;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;
/**
 * Created by fengxinzi on 17-9-25.
 */
public class PropertyUtil {
    public  static  final  String   PATH_File = "/jdbc.properties";

    private static  Properties prop;

    static{
        init();
    }
    private  static  void init ()  {
        try(
            InputStream resourceAsStream = PropertyUtil.class.getResourceAsStream(PATH_File);
            InputStreamReader inputStreamReader = new InputStreamReader(resourceAsStream, "utf-8");
        ) {
            prop = new Properties();
            prop.load(inputStreamReader);
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    public  static  final  String JDBC_DIRVER = prop.getProperty("jdbc.dirver");
    public  static  final  String JDBC_URL    = prop.getProperty("jdbc.url");
    public  static  final  String JDBC_USERNAME =prop.getProperty("jdbc.username");
    public  static  final  String JDBC_PASSWORD =prop.getProperty("jdbc.password");

}

3.创建JDBC client 用于注册驱动和获取jdbc的connetion实例

package utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * Created by fengxinzi on 17-9-25.
 */
public class JdbcClient {

    static {
        try {
            Class.forName(PropertyUtil.JDBC_DIRVER);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    public static  Connection getConnection() throws ClassNotFoundException, SQLException {
        return DriverManager.getConnection(
                PropertyUtil.JDBC_URL, PropertyUtil.JDBC_USERNAME, PropertyUtil.JDBC_PASSWORD);

    }
}
4.创建简单的测试例子,用获取的connection创建statement 操作数据库,并返回resultSet,通过遍历resultSet获取具体参数:

@Test
public void test20()  {
    try (Connection connection = JdbcClient.getConnection()){
        String sql = "select * from name";
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(sql);
        while (resultSet.next()){
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println(name+"ID"+id);
        }
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    }

}

打印结果如下

ruirui的ID为0
pengpeng的ID为2
baobao的ID为3
xinxin的ID为4
zhouzhou的ID为5


Process finished with exit code 0