【问题标题】:Implementing java 8 DriverAction Interface实现 java 8 DriverAction 接口
【发布时间】:2018-10-09 14:47:33
【问题描述】:

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

//error -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");

    }
}

【问题讨论】:

  • 你得到的错误是什么? (edit你的问题并添加错误信息)
  • 如果错误是注释中提到的错误(“com.mysql 无法解析到类型”),请确保 MySQL JDBC 驱动 JAR 在类路径中。

标签: java jdbc


【解决方案1】:

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

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

来自 javadoc:

使用DriverManager 注册给定的驱动程序。一个新装的 驱动类应该调用方法registerDriver来使自己 DriverManager 知道。如果驱动程序当前已注册, 没有采取任何行动。

重要的部分是“新加载的驱动程序类应该调用方法 registerDriver 以使 DriverManager 知道自身。”

DriverAction:

Driver 想要成为时必须实现的接口 由DriverManager通知。

所以,它是针对 JDBC 驱动程序本身的,而不是针对用户程序的。

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 2015-11-08
    • 2017-10-21
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 2012-03-20
    相关资源
    最近更新 更多