JDBC

JAVA Database Connectivity java 数据库连接

  • 为什么会出现JDBC

SUN公司提供的一种数据库访问规则、规范, 由于数据库种类较多,并且java语言使用比较广泛,sun公司就提供了一种规范,让其他的数据库提供商去实现底层的访问规则。 我们的java程序只要使用sun公司提供的jdbc驱动即可。



 



使用JDBC的基本步骤

  1. 注册驱动
    DriverManager.registerDriver(new com.mysql.jdbc.Driver());
  2. 建立连接
    //DriverManager.getConnection("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");
    //2. 建立连接 参数一: 协议 + 访问的数据库 , 参数二: 用户名 , 参数三: 密码。
    conn = DriverManager.getConnection("jdbc:mysql://localhost/students", "root", "root");
  3. 创建statement
    //3. 创建statement , 跟数据库打交道,一定需要这个对象
    st = conn.createStatement();
  4. 执行sql ,得到ResultSet
    //4. 执行查询 , 得到结果集
    String sql = "select * from t_student1";
    rs = st.executeQuery(sql);
  5. 遍历结果集
    //5. 遍历查询每一条记录
    while(rs.next()){
      int id = rs.getInt("id");
      String name = rs.getString("name");
      int age = rs.getInt("age");
      System.out.println("id="+id + "===name="+name+"==age="+age);
}
  1. 释放资源
if (rs != null) {
        try {
            rs.close();
        } catch (SQLException sqlEx) { } // ignore 
        rs = null;
    }

    ...

优化:

JDBC 工具类构建

  1. 资源释放工作的整合
  2. 驱动防二次注册
DriverManager.registerDriver(new com.mysql.jdbc.Driver());

Driver 这个类里面有静态代码块,一上来就执行了,所以等同于我们注册了两次驱动。 其实没这个必要的。
//静态代码块 ---> 类加载了,就执行。 java.sql.DriverManager.registerDriver(new Driver());


    最后形成以下代码即可。

    Class.forName("com.mysql.jdbc.Driver");
  1. 使用properties配置文件
  1. 在src底下声明一个文件 xxx.properties ,里面的内容吐下:
    driverClass=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost/student
    name=root
    password=root
  2. 在工具类里面,使用静态代码块,读取属性
static{
        try {
            //1. 创建一个属性配置对象
            Properties properties = new Properties();
            InputStream is = new FileInputStream("jdbc.properties"); //对应文件位于工程根目录
             
            //使用类加载器,去读取src底下的资源文件。 后面在servlet  //对应文件位于src目录底下
            //InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
            //导入输入流。
            properties.load(is);
            
            //读取属性
            driverClass = properties.getProperty("driverClass");
            url = properties.getProperty("url");
            name = properties.getProperty("name");
            password = properties.getProperty("password");
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }