java.sql包详解
数据类型
java.sql.Array
java.sql.Blob
java.sq1.Clob
java.sql.Date
java.sq1.NC1ob
java.sq1.Struct
java.sq1.Time
java.sq1.Timestamp
java.sq1.SQLXML
java.sql.Ref
java.sql.RowId
java.sq1.SQLOutput
java.sq1.SQLData
java.sq1.SQLInput
枚举
java.sq1.SQLType
java.sq1.JDBCType
java.sq1.Types
java.sq1.RowIdLifeTime
java.sq1.PseudoColumnUsage
java.sql.ClientinfoStatus
API相关
java.sq1.Wrapper
java.sq1.Connection
java.sq1.Statement
java.sql.CallableStatement
java.sq1.PreparedStatement
java.sq1.DatabaseMetaData
java.sq1.ParameterMetaData
java.sq1.ResultSet
java.sql.ResultSetMetaData
驱动相关
java.sql.Driver
java.sql.DriverAction
java.sq1.DriverManager
java.sql.DriverPropertyInto
java.sq1.SQLPermission
java.sql.Savepoin
异常
java.sq1.BatchupdateException
java.sq1.DataTruncation
java.sq1.SQLClientInfoException
java.sq1.SQLDataException
java.sq1.SQLException
java.sq1.SQLFeatureNotSupportedException
java.sq1.SQLIntegrityConstraintViolationException
java.sq1.SQLInvalidAuthorizationSpecException
java.sql.SQLNonTransientConnectionException
jaya.sql.SQLNonTransientException
java.sq1.SQLSyntaxErrorException
java.sq1.SQLTimeoutException
java.sq1.SQLTransactionRollbackException
java.sql.SQLTransientConnectionException
java.sql.SQLTransientException
java.sql.SQLWarning
作为Java开发人员需要掌握的API
java.sq1.Wrapper
T unwrap(java.lang.Class iface) throws java.sql.SQLException;
//unwrap()方法用于返回未经过包装的JDBC驱动原始类型实例,我们可以通过该实例调用JDBC驱动中提供的非标准的方法。
boolean isWrapperFor(java.lang.Class> iface) throws java.sql.SQLException;
//isWrapperFor()方法用于判断当前实例是否是JDBC驱动中某一类型的包装类型。
java.sq1.Connection
java.sq1.Statement
java.sq1.CallableStatoment
java.sq1.PreparedStatement
java.sq1.DatabaseMetaData
java.sql.ParameterMetaData
java.sql.ResultSet
java.sq1.ResultSetMetaData
javax.sql包详解
数据源
javax.sq1.DataSource
javax.sq1.CommonDataSource
连接池相关
javax.sq1.ConnectionPoolDataSource
javax.sql.PooledConnection
javax.sq1.ConnectionEvent
javax.sq1.ConnectionEventListener
javax.sq1.StatementEvent
javax.sq1.StatementEventListener
ResultSet扩展
javax.sql.RowSet
javax.sql.RowSetEvent
javax.sql.RowSetInternal
javax.sq1.RowSetListener
javax.sql.RowSetMetaData
javax.sq1.RowSetReader
javax.sql.RowSetWriter
分布式扩展
javax.sq1.XAConnection
javax.sq1.XADataSource
JDBC驱动
所有的JDBC驱动都必须实现Driver接口,而且实现类必须包含一个静态初始化代码块
package com.mysql.cj.jdbc;
import com.mysql.cj.jdbc.NonRegisteringDriver;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
public Driver() throws SQLException {
}
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can\'t register driver!");
}
}
}
当我们加载驱动实现类时,上面的静态初始化代码块就会被调用,向DriverManager中注册一个驱动类的实例。这就是为什么我们使用JDBC操作数据库时一般会先加载驱动
Class.forName("com.mysql.cj.jdbc.Driver")
为了确保驱动程序可以使用这种机制加载,Driver实现类需要提供一个无参数的构造方法。
常用的数据库驱动程序的驱动实现类名及JDBC URL如下:
Oracle
驱动程序类名:oracle.jdbc.driver.OracleDriver
。
JDBC URL:jdbc: oracle:thin:@//
或jdbc:oracle:thin:@
。
例如:jdbc:oracle:thin:@localhost:1521:orcl
。
MySQL
驱动程序类名:com.mysql.jdbc.Driver
。新驱动(com.mysql.cj.jdbc.Driver)
JDBC URL:jdbc: mysql://
。
例如:jdbc:mysql://localhost/sample
。
IBM DB2
驱动程序类名:com.ibm.db2.jcc.DB2Driver
。
JDBC URL:jdbc:db2://
。
例如:jdbc:db2://localhost:5000/sample
。