我正在运行简单的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");
}
}发布于 2018-10-10 00:14:44
该错误本身意味着在编译代码时类路径上没有驱动程序。然而,更大的问题是你不应该这样做。
DriverManager.registerDriver方法是供用户程序调用的而不是。它们用于JDBC驱动程序注册自身。DriverManager.registerDriver(Driver, DriverAction)是一个回调机制,让驱动程序在注销时执行额外的工作。
在javadoc中:
向
DriverManager注册给定的驱动程序。新加载的驱动程序类应该调用方法registerDriver,以使DriverManager知道它自己。如果驱动程序当前已注册,则不会执行任何操作。
重要的部分是“新加载的驱动程序类应该调用registerDriver方法,以使本身成为DriverManager所知的。”
在DriverAction上
当
Driver想要从DriverManager得到通知时,必须实现的接口。
因此,它是针对JDBC驱动程序本身的,而不是针对用户程序的。
https://stackoverflow.com/questions/52723831
复制相似问题