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