基本的Java derby DB读取“没有合适的驱动程序”错误

时间:2019-12-14 02:05:02

标签: java netbeans derby

我从使用netbeans的基本Java derby DB程序中遇到以下错误。

我尝试下载许多类型的包含jar文件的驱动程序,然后更改Class.forName(_______);语句以包括没有运气的路径。我读过许多类似的问题,并尝试这些决议都没有运气。

当我转到服务/数据库时,右键单击数据库并单击属性,它显示为

  

驱动程序类:org.apache.derby.jdbc.ClientDriver。

我可以在org.apache.derby.jdbc.ClientDriver下找到project/libraries文件,但只能在我最近通过右键单击app/properties/libraries/OK而添加的jar下,不确定文件在jdk 1.8中的位置。

任何帮助将不胜感激。

  

错误:“ SQL错误:java.sql.SQLException:找不到适用于jdbc:derby:// localhost:1527 / sample 0 08001的驱动程序”

    package javaapplication10;

    import java.sql.*;

    public class JavaApplication10 {

    /**
    * @param args the command line arguments
    */
    public static void main(String[] args) {
    String data = "jdbc:derby://localhost:1527/sample";
    try (
       Connection conn = DriverManager.getConnection(
           data, "app", "APP");
       Statement st = conn.createStatement()) {

       Class.forName("org.apache.derby.jdbc.ClientDriver");

        ResultSet rec = st.executeQuery(
            "select CUSTOMER_ID, NAME, CITY, STATE " +
            "from APP.CUSTOMER " +
            "order by CUSTOMER_ID");
        while (rec.next()) {
            System.out.println("CUSTOMER_ID:\t"
                + rec.getString(1));
            System.out.println("NAME:\t" + rec.getString(2));
            System.out.println("CITY:\t" + rec.getString(3));
            System.out.println("STATE:\t" + rec.getString(4));
            System.out.println();
        }
        st.close();
       } catch (SQLException s) {
        System.out.println("SQL Error: " + s.toString() + " "
            + s.getErrorCode() + " " + s.getSQLState());
       } catch (Exception e) {
        System.out.println("Error: " + e.toString()
            + e.getMessage());
       }
       }
       }

libraries image

1 个答案:

答案 0 :(得分:0)

您需要将Class.forName("org.apache.derby.jdbc.ClientDriver");行移到try块之外(在try时钟之前)。您可以使main方法声明throws ClassNotFoundException以便程序进行编译。这样,驱动程序将可用于try中的DriverManager来查找和使用。

此外,由于您正在try定义内创建Statement,因此st.close();之前的最后一行catch是多余的,因此您可以安全地删除它。