簡體   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