1Z0-809复习 第10章 JDBC

JDBC

Introducing Relational Databases and SQL

java访问数据库的两种方式。

  • JDBC:通过行列访问数据
  • JPA:访问数据是通过Java Object(ORM)

相对于关系型数据库还有一种类型的数据库叫做NoSQL数据库。
存储数据不是用table,而是用某种格式。

Identifying the Structure of a Relational Database

Writing Basic SQL Statements

Introducing the Interfaces of JDBC

各个数据库的jar包里提供了四种interface的实装类。 但在编程的时候不需要指明实装类,只用接口。

Connecting to a Database

Building a JDBC URL

Getting a Database Connection

Obtaining a Statement

Statement stmt = conn.createStatement(
    ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);

Choosing a ResultSet Type

  • TYPE_FORWARD_ONLY :只能按照检索的顺序,而后两者可以任何顺序访问。
  • TYPE_SCROLL_INSENSITIVE :数据库的值变化,不会会在scroll时即时反应。
  • TYPE_SCROLL_SENSITIVE :数据库的值有变化会在scroll时即时反应。

Choosing a ResultSet Concurrency Mode

  • CONCUR_READ_ONLY :ResultSet是只读的
  • CONCUR_UPDATABLE :可以对ResultSet进行更新操作。

Executing a Statement

boolean isResultSet = stmt.execute(sql);
if (isResultSet) {
    ResultSet rs = stmt.getResultSet();
    System.out.println("ran a query");
} else {
    int result = stmt.getUpdateCount();
    System.out.println("ran an update");
}

除了executeQuery和executeUpdate,用execute也可以。

Getting Data from a ResultSet

rs. getInt (1) index从1开始,而不是从0开始。

Closing Database Resources

public static void main(String[] args) throws SQLException {
    String url = " jdbc:derby:zoo";
    try (Connection conn = DriverManager.getConnection(url);
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("select name from animal")) {
        while (rs.next())
            System.out.println(rs.getString(1));
    }
}

try-with-resources的方法来关掉这个resource。