JDBC原理

JDBC接口及数据库厂商实现

类型 类名
驱动管理 DriverManager
连接接口 Connection
DatabaseMetaData
语句对象接口 Statement
PreparedStatement
CallableStatement
结果集接口 ResultSet
ResultSetMetaData

工作原理

  • 加载驱动,建立连接:DriverManager
  • 创建语句对象:Statement
  • 执行SQL语句:一个字符串,通过Statement执行
  • 处理结果集:只有查询语句才有结果集
  • 关闭连接

Driver接口及驱动类加载

驱动类加载方式:
(Oracle)Class.forName("oracle.jdbc.driver.OracleDriver");
(MySQL)
Class.forName("com.mysql.jdbc.Driver");

Connection接口

//Oracle格式
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","openlab","open123");
//三个参数分别是url,用户名,密码
//jdbc:oracle:thin:@HOST:PORT:数据库实例名

//MySQL格式
Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/myDB?user=soft&password=soft1234&useSSL=false&useUnicod 
e=true&characterEncoding=8859_1"); 
//jdbc:mysql://HOST:PORT/数据库名

Statement接口

Statement stmt = conn.createStatement();
  • boolean flag = stmt.execute(sql);
  • ResultSet rs = stmt.executeQuery(sql);
  • int flag = stmt.executeUpdate(sql);

execute执行的语句通常是DDL语句。

executeQuery通常用于执行查询语句。

executeUpdate通常用于DML操作。返回值是影响的数据条数。

ResultSet接口

执行查询SQL语句后返回的结果集,由ResultSet接口接收。

常用处理方式:遍历/判断是否有结果

String sql = "select * from emp";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()) {
    System.out.println(rs.getInt("empno") + "," + rs.getString("ename"));
  • 查询的一系列结果存放在ResultSet对象的一系列行中
  • ResultSet对象的最初位置在行首
  • ResultSet.next()方法用来在行间移动,一定要调用next确保有数据再获取字段的值
  • ResultSet.getXXX()方法用来取得字段的内容

你可能感兴趣的:(JDBC原理)