如何修复java.sql.SQLException。没有适用于jdbc的驱动程序

时间:2019-09-09 11:00:02

标签: java sql database jdbc

当我尝试从命令行运行文件时,出现错误java.sql.SQLException没有适用于jdbc:derby:books的驱动程序。在Eclipse中,一切正常。我读了一本书《 Java,如何编程》 Deitel&Deitel,该文件就是其中的一个例子。当我尝试从命令行编译程序时,它没有显示任何错误,但问题出在运行。请帮助

public class DisplayAuthors {
 public static void main(String args[]) {
  final String DATABASE_URL = "jdbc:derby:books";        
  final String SELECT_QUERY =                            
     "SELECT authorID, firstName, lastName FROM authors";
  String user="deitel";
  String password="deitel";


  try ( 

    Connection connection = DriverManager.getConnection(      
     DATABASE_URL, user,password);                     
     Statement statement = connection.createStatement();       
     ResultSet resultSet = statement.executeQuery(SELECT_QUERY)) {


     ResultSetMetaData metaData = resultSet.getMetaData();
     int numberOfColumns = metaData.getColumnCount();     

     System.out.printf("Table Authors database books:%n%n");


     for (int i = 1; i <= numberOfColumns; i++) {
        System.out.printf("%-8s\t", metaData.getColumnName(i));
     }
     System.out.println();


     while (resultSet.next()) {
        for (int i = 1; i <= numberOfColumns; i++) {
           System.out.printf("%-8s\t", resultSet.getObject(i));
        }
        System.out.println();
     } 
  }
  catch (SQLException sqlException) {
     sqlException.printStackTrace();
  }                                                   
} 
}

命令行执行:

javac DisplayAuthors.java
java DisplayAuthors 

2 个答案:

答案 0 :(得分:1)

您正在命令行中运行类文件,而没有依赖项。

在您的eclipse IDE中,您可能具有derby.jar或类似的依赖项,并且eclipse会自动将所有内容添加到执行中。直接从命令行执行时,需要添加所有依赖项。

如果您注意到在MANIFEST.MF中创建了一个具有依赖项的可运行jar,而您试图直接执行该类,则需要添加-cp参数以及 all 依赖项的路径:< / p>

示例:

java -cp Derby.jar;. DisplayAuthors

假设Derby.jar和您的类位于同一位置,并且没有其他要添加的依赖项。

有关以下信息的更多信息:

Java Command line (Oracle Java9 SE)

Differences between "java -cp" and "java -jar"?

答案 1 :(得分:0)

  

java.sql.SQLException。没有适用于jdbc的驱动程序

当JDBC DriverManager找不到给定连接URL的任何合适的驱动程序时,上述错误将跳转。连接数据库之前根本没有加载JDBC驱动程序,或者连接URL错误。

URL应该是这样的,

jdbc:derby://localhost:1527/dbname;create=true;

jdbc:derby:books;create=true;

如果要创建不存在的数据库,请使用create=true

最后,检查Derby JAR文件是否在类路径中。如果找不到,则可以从here下载JAR并将其添加到项目的Library文件夹中。

对于Apache Derby,驱动程序类名称为org.apache.derby.jdbc.ClientDriver。因此,如下所示,

Class.forName("org.apache.derby.jdbc.ClientDriver");
Connection connection = DriverManager.getConnection(DATABASE_URL, user, password);  

确保您的URL,用户名和密码正确,然后尝试运行代码。