java数据库连接

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> T unwrap(java.lang.Class<T> 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:@//<host>:<port>/ServiceName或jdbc:oracle:thin:@<host>:<port>:<SID>。
例如:jdbc:oracle:thin:@localhost:1521:orcl。

MySQL

驱动程序类名:com.mysql.jdbc.Driver。新驱动(com.mysql.cj.jdbc.Driver)
JDBC URL:jdbc: mysql://<host>:<port>/<database_name>。
例如:jdbc:mysql://localhost/sample。

IBM DB2

驱动程序类名:com.ibm.db2.jcc.DB2Driver。
JDBC URL:jdbc:db2://<host>[:<port>]/<database_name>。
例如:jdbc:db2://localhost:5000/sample。

DataSource

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容