[英]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.