繁体   English   中英

实现Java 8 DriverAction接口

[英]Implementing java 8 DriverAction Interface

我正在运行一个简单的JDBC演示程序,其中使用DriverAction接口及其注销方法测试其功能,但Dirver类收到错误,请查找以下代码并提出缺失的建议。

//错误-com.mysql无法解析为错误类型

import java.sql.*;

public class Jdbcexample implements DriverAction {

    public static void main(String[] args) {
        try {
        Driver driver = new com.mysql.jdbc.Driver();/*com.mysql can not be resolve to type error */
        DriverAction driveraction = new Jdbcexample();
        DriverManager.registerDriver(driver,driveraction);
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");
        Statement stmt =con.createStatement();
        ResultSet rs =stmt.executeQuery("select* from user");
        while(rs.next()) {
            System.out.println(rs.getInt(1)+""+rs.getString(2)+""+rs.getString(3));
        }
        con.close();
    DriverManager.deregisterDriver(driver);
        }
        catch(Exception e) {
            System.out.println(e);
        }

}

    @Override
    public void deregister() {
        System.out.println("Driver is deregistered");

    }
}

该错误本身意味着在编译代码时,类路径上没有驱动程序。 但是,更大的问题是您不应该这样做。

DriverManager.registerDriver方法不适用于用户程序。 它们是供JDBC驱动程序注册的。 DriverManager.registerDriver(Driver, DriverAction)是一种回调机制,供驱动程序在注销时执行其他工作。

从javadoc:

DriverManager注册给定的驱动程序。 新加载的驱动程序类应调用方法registerDriver以使自身对DriverManager已知。 如果驱动程序当前已注册,则不采取任何措施。

最重要的部分是“新装入驱动程序类应该调用方法registerDriver以告知DriverManager。”

并在DriverAction

当要通过DriverManager通知Driver时必须实现的接口。

因此,它仅适用于JDBC驱动程序本身,而不适用于用户程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM