首次连接到Netbeans SQL数据库-java.SQL.SQLException:未找到合适的驱动程序0 08001
我对Java相当陌生,所以我买了一本书来学习。在我进入SQL一章之前,一切都进行得很顺利。我正在使用示例数据库在NetBeans中工作,但无法使数据库与程序连接 以下是我从书中忠实复制的代码:首次连接到Netbeans SQL数据库-java.SQL.SQLException:未找到合适的驱动程序0 08001,java,database,netbeans,Java,Database,Netbeans,我对Java相当陌生,所以我买了一本书来学习。在我进入SQL一章之前,一切都进行得很顺利。我正在使用示例数据库在NetBeans中工作,但无法使数据库与程序连接 以下是我从书中忠实复制的代码: import java.sql.*; public class SysTableReporter { public static void main(String[] arguments) { String data = "jdbc:derby://localhost:1527/
import java.sql.*;
public class SysTableReporter {
public static void main(String[] arguments) {
String data = "jdbc:derby://localhost:1527/sample";
try (
Connection conn = DriverManager.getConnection(
data, "app", "APP");
Statement st = conn.createStatement()) {
System.out.println("TABLEID:\t" );
Class.forName("org.apache.derby.jdbc.ClientDriver");
ResultSet rec = st.executeQuery(
"select * " +
"from SYS.SYSTABLES " +
"order by TABLENAME");
while(rec.next()) {
System.out.println("TABLEID:\t" + rec.getString(1));
System.out.println("TABLENAME:\t" + rec.getString(2));
System.out.println("TABLETYPE:\t" + rec.getString(3));
System.out.println("SCHEMAID:\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());
}
}
}
以下是“我的服务”面板的外观:
以下是我的输出:
SQL Error: java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/sample 0 08001
起初我以为我只是有一些打字错误,但仔细看了看,我找不到。我尝试安装一个新的JDBC驱动程序,但这似乎也没有帮助。我正在运行一台Windows8笔记本电脑,我已经打开了telnet客户端。在这一点上,我最好的猜测是,我在初始设置中不知何故错过了一个步骤,但我无法找到它来返回并修复它。任何帮助都很好。您可能只是缺少了项目库部分中的Derby JDBC驱动程序jar(我假设您创建了一个标准的Netbeans项目,而不是Maven类型的项目)。这个jar称为derbyclient.jar 解决此问题的最简单方法是:
} catch (SQLException s) {
System.out.println("SQL Error: " + s.toString() + " "
+ s.getErrorCode() + " " + s.getSQLState());
// and show us the stacktrace
s.printStackTrace();
} catch (Exception e) {
System.out.println("Error: " + e.toString() + e.getMessage());
// and show us the stacktrace
e.printStackTrace();
}
堆栈跟踪不仅会向您显示错误发生的确切位置,还会显示异常的轨迹(程序是如何到达的),这在更复杂的程序中非常重要。绝对是你想要学习使用的东西
这里有很多关于堆栈跟踪的信息:我认为您真正遇到的只是排序问题。forName调用将驱动程序注册到DriverManager(我想)。这需要在尝试通过DriverManager建立连接之前进行
Class.forName( "org.apache.derby.jdbc.ClientDriver" ).newInstance();
Connection conn = DriverManager.getConnection( data, "app", "APP");
如果这给了您一些“ClassNotFound”异常,那么fvu关于类路径上没有Derby JDBC Jar的断言就是下一个问题
Derby文档有一个例子:+1个漂亮的捕获。现在,如果代码是像书中那样逐字逐句的,那么最好去掉这本书:)